修改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
|
||||
PUBLIC
|
||||
Boost::system
|
||||
Boost::filesystem
|
||||
Boost::thread
|
||||
Boost::chrono
|
||||
Boost::date_time
|
||||
Boost::atomic
|
||||
Boost::regex
|
||||
nlohmann_json::nlohmann_json
|
||||
CURL::libcurl
|
||||
Threads::Threads
|
||||
-pthread # 添加显式 pthread 链接选项
|
||||
-pthread
|
||||
)
|
||||
|
||||
# 创建主可执行文件
|
||||
|
||||
@ -27,6 +27,7 @@ log_info "Building version: ${VERSION}"
|
||||
TEMP_DIR="${PROJECT_ROOT}/temp_build"
|
||||
rm -rf "${TEMP_DIR}"
|
||||
mkdir -p "${TEMP_DIR}/bin"
|
||||
mkdir -p "${TEMP_DIR}/lib"
|
||||
|
||||
# Build the project
|
||||
log_info "Building project..."
|
||||
@ -55,6 +56,45 @@ cp "bin/${PROJECT_NAME}" "${TEMP_DIR}/bin/" || {
|
||||
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
|
||||
echo "${VERSION}" > "${TEMP_DIR}/bin/version.txt"
|
||||
|
||||
@ -65,7 +105,7 @@ sha256sum "${PROJECT_NAME}" > "${PROJECT_NAME}.sha256"
|
||||
# Create deployment archive
|
||||
cd "${TEMP_DIR}"
|
||||
PACKAGE_NAME="${PROJECT_NAME}_${VERSION}.tar.gz"
|
||||
tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/
|
||||
tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/ lib/
|
||||
|
||||
# Cleanup
|
||||
cd "${PROJECT_ROOT}"
|
||||
@ -73,18 +113,23 @@ rm -rf "${TEMP_DIR}"
|
||||
|
||||
log_info "Package created: ${PACKAGE_NAME}"
|
||||
log_info "Package contents:"
|
||||
log_info " - Executable binary"
|
||||
log_info " - Version file"
|
||||
log_info " - Checksum file"
|
||||
log_info " - Executable binary (in bin/)"
|
||||
log_info " - Runtime libraries (in lib/)"
|
||||
log_info " - Version file (in bin/)"
|
||||
log_info " - Checksum file (in bin/)"
|
||||
|
||||
# Print instructions
|
||||
echo
|
||||
log_info "To deploy:"
|
||||
echo "1. Copy ${PACKAGE_NAME} to production environment"
|
||||
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 "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 "7. Start service: systemctl start collision-avoidance"
|
||||
echo "8. Check status: systemctl status collision-avoidance"
|
||||
echo "7. Copy new libraries: cp lib/* /opt/collision_avoidance/lib/"
|
||||
echo "8. Start service: systemctl start collision-avoidance"
|
||||
echo "9. Check status: systemctl status collision-avoidance"
|
||||
Loading…
Reference in New Issue
Block a user