修改build_execute_package.sh
This commit is contained in:
parent
30e9da74bf
commit
12047f50f1
@ -125,11 +125,16 @@ target_include_directories(${PROJECT_NAME}_lib
|
|||||||
target_link_libraries(${PROJECT_NAME}_lib
|
target_link_libraries(${PROJECT_NAME}_lib
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Boost::system
|
Boost::system
|
||||||
|
Boost::filesystem
|
||||||
Boost::thread
|
Boost::thread
|
||||||
|
Boost::chrono
|
||||||
|
Boost::date_time
|
||||||
|
Boost::atomic
|
||||||
|
Boost::regex
|
||||||
nlohmann_json::nlohmann_json
|
nlohmann_json::nlohmann_json
|
||||||
CURL::libcurl
|
CURL::libcurl
|
||||||
Threads::Threads
|
Threads::Threads
|
||||||
-pthread # 添加显式 pthread 链接选项
|
-pthread
|
||||||
)
|
)
|
||||||
|
|
||||||
# 创建主可执行文件
|
# 创建主可执行文件
|
||||||
|
|||||||
@ -27,6 +27,7 @@ log_info "Building version: ${VERSION}"
|
|||||||
TEMP_DIR="${PROJECT_ROOT}/temp_build"
|
TEMP_DIR="${PROJECT_ROOT}/temp_build"
|
||||||
rm -rf "${TEMP_DIR}"
|
rm -rf "${TEMP_DIR}"
|
||||||
mkdir -p "${TEMP_DIR}/bin"
|
mkdir -p "${TEMP_DIR}/bin"
|
||||||
|
mkdir -p "${TEMP_DIR}/lib"
|
||||||
|
|
||||||
# Build the project
|
# Build the project
|
||||||
log_info "Building project..."
|
log_info "Building project..."
|
||||||
@ -55,6 +56,45 @@ cp "bin/${PROJECT_NAME}" "${TEMP_DIR}/bin/" || {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --- BEGIN: Copy Libraries ---
|
||||||
|
log_info "Copying required runtime libraries to ${TEMP_DIR}/lib/ ..."
|
||||||
|
|
||||||
|
GCC_RUNTIME_LIB_PATH="/usr/local/lib64"
|
||||||
|
if [ -f "${GCC_RUNTIME_LIB_PATH}/libstdc++.so.6" ]; then
|
||||||
|
cp -Lv "${GCC_RUNTIME_LIB_PATH}/libstdc++.so.6" "${TEMP_DIR}/lib/"
|
||||||
|
log_info "Copied libstdc++.so.6 (and its target file)"
|
||||||
|
else
|
||||||
|
log_warn "libstdc++.so.6 not found in ${GCC_RUNTIME_LIB_PATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${GCC_RUNTIME_LIB_PATH}/libgcc_s.so.1" ]; then
|
||||||
|
cp -Lv "${GCC_RUNTIME_LIB_PATH}/libgcc_s.so.1" "${TEMP_DIR}/lib/"
|
||||||
|
log_info "Copied libgcc_s.so.1 (and its target file)"
|
||||||
|
else
|
||||||
|
log_warn "libgcc_s.so.1 not found in ${GCC_RUNTIME_LIB_PATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
BOOST_LIB_PATH="/usr/lib64/boost169"
|
||||||
|
BOOST_LIBS=(
|
||||||
|
"libboost_system.so.1.69.0"
|
||||||
|
"libboost_filesystem.so.1.69.0"
|
||||||
|
"libboost_thread.so.1.69.0"
|
||||||
|
"libboost_chrono.so.1.69.0"
|
||||||
|
"libboost_date_time.so.1.69.0"
|
||||||
|
"libboost_atomic.so.1.69.0"
|
||||||
|
"libboost_regex.so.1.69.0"
|
||||||
|
)
|
||||||
|
|
||||||
|
for boost_lib in "${BOOST_LIBS[@]}"; do
|
||||||
|
if [ -f "${BOOST_LIB_PATH}/${boost_lib}" ]; then
|
||||||
|
cp -Lv "${BOOST_LIB_PATH}/${boost_lib}" "${TEMP_DIR}/lib/"
|
||||||
|
log_info "Copied ${boost_lib}"
|
||||||
|
else
|
||||||
|
log_warn "${boost_lib} not found in ${BOOST_LIB_PATH}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# --- END: Copy Libraries ---
|
||||||
|
|
||||||
# Generate version file
|
# Generate version file
|
||||||
echo "${VERSION}" > "${TEMP_DIR}/bin/version.txt"
|
echo "${VERSION}" > "${TEMP_DIR}/bin/version.txt"
|
||||||
|
|
||||||
@ -65,7 +105,7 @@ sha256sum "${PROJECT_NAME}" > "${PROJECT_NAME}.sha256"
|
|||||||
# Create deployment archive
|
# Create deployment archive
|
||||||
cd "${TEMP_DIR}"
|
cd "${TEMP_DIR}"
|
||||||
PACKAGE_NAME="${PROJECT_NAME}_${VERSION}.tar.gz"
|
PACKAGE_NAME="${PROJECT_NAME}_${VERSION}.tar.gz"
|
||||||
tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/
|
tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/ lib/
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
cd "${PROJECT_ROOT}"
|
cd "${PROJECT_ROOT}"
|
||||||
@ -73,18 +113,23 @@ rm -rf "${TEMP_DIR}"
|
|||||||
|
|
||||||
log_info "Package created: ${PACKAGE_NAME}"
|
log_info "Package created: ${PACKAGE_NAME}"
|
||||||
log_info "Package contents:"
|
log_info "Package contents:"
|
||||||
log_info " - Executable binary"
|
log_info " - Executable binary (in bin/)"
|
||||||
log_info " - Version file"
|
log_info " - Runtime libraries (in lib/)"
|
||||||
log_info " - Checksum file"
|
log_info " - Version file (in bin/)"
|
||||||
|
log_info " - Checksum file (in bin/)"
|
||||||
|
|
||||||
# Print instructions
|
# Print instructions
|
||||||
echo
|
echo
|
||||||
log_info "To deploy:"
|
log_info "To deploy:"
|
||||||
echo "1. Copy ${PACKAGE_NAME} to production environment"
|
echo "1. Copy ${PACKAGE_NAME} to production environment"
|
||||||
echo "2. Extract: tar xzf ${PACKAGE_NAME}"
|
echo "2. Extract: tar xzf ${PACKAGE_NAME}"
|
||||||
echo "3. Verify checksum: sha256sum -c ${PROJECT_NAME}.sha256"
|
echo " This will create 'bin/' and 'lib/' directories."
|
||||||
|
echo "3. Verify checksum: cd bin && sha256sum -c ${PROJECT_NAME}.sha256 && cd .."
|
||||||
echo "4. Stop service: systemctl stop collision-avoidance"
|
echo "4. Stop service: systemctl stop collision-avoidance"
|
||||||
echo "5. Backup old binary"
|
echo "5. Backup old binary and libraries (optional but recommended)"
|
||||||
|
echo " e.g., mv /opt/collision_avoidance/bin/${PROJECT_NAME} /opt/collision_avoidance/bin/${PROJECT_NAME}.bak"
|
||||||
|
echo " e.g., rsync -ab /opt/collision_avoidance/lib/ /opt/collision_avoidance/lib_bak/"
|
||||||
echo "6. Copy new binary: cp bin/${PROJECT_NAME} /opt/collision_avoidance/bin/"
|
echo "6. Copy new binary: cp bin/${PROJECT_NAME} /opt/collision_avoidance/bin/"
|
||||||
echo "7. Start service: systemctl start collision-avoidance"
|
echo "7. Copy new libraries: cp lib/* /opt/collision_avoidance/lib/"
|
||||||
echo "8. Check status: systemctl status collision-avoidance"
|
echo "8. Start service: systemctl start collision-avoidance"
|
||||||
|
echo "9. Check status: systemctl status collision-avoidance"
|
||||||
Loading…
Reference in New Issue
Block a user