#!/bin/bash TARGET="cloud-front-test" SRC_DIR="./cloudfront/code" LIB_DIR="./cloudfront/lib" OUT_DIR="./bin" # 创建输出目录 mkdir -p "$OUT_DIR" # 源文件,所有主 cpp 文件 SRC="$SRC_DIR/main.cpp \ $SRC_DIR/worker.cpp \ $SRC_DIR/log4.cpp \ $SRC_DIR/cfg_parser.cpp \ $SRC_DIR/interface.cpp \ $SRC_DIR/rocketmq.cpp \ $SRC_DIR/tinyxml2.cpp \ ./client2.cpp \ ./dealMsg.cpp \ ./main_thread.cpp \ ./PQSMsg.cpp " INCLUDE_DIRS="-I$SRC_DIR \ -I$SRC_DIR/nlohmann \ -I$SRC_DIR/curl \ -I$SRC_DIR/log4cplus \ -I$SRC_DIR/rocketmq \ -I$SRC_DIR \ -I./lib/libuv-v1.51.0/include \ -I. " LIB_DIRS="-L$LIB_DIR -L/usr/lib64 -L/usr/local/lib" LIBS="./cloudfront/lib/libcurl.so \ ./cloudfront/lib/libssl.so \ ./cloudfront/lib/libcrypto.so \ ./cloudfront/lib/liblog4cplus.so \ -lpthread -ldl -lrt \ -lstdc++fs \ -lz \ ./libuv.a \ -pthread" # 如果有静态 rocketmq 库就加上 if [ -f "$LIB_DIR/librocketmq.a" ]; then LIBS="$LIB_DIR/librocketmq.a $LIBS" fi # 判断是否为 debug 版本 if [[ "$1" == "debug" ]]; then CXXFLAGS="-std=c++11 -g -O0" TARGET="${TARGET}d" echo "🟢 编译调试版本 (-g -O0)" else CXXFLAGS="-std=c++11 -O2 -static-libstdc++ -static-libgcc" echo "🔵 编译正式版本 (-O2 -static)" fi # 编译命令 g++ $CXXFLAGS $SRC $INCLUDE_DIRS $LIB_DIRS $LIBS -Wl,-rpath='$ORIGIN/../cloudfront/lib' -o "$OUT_DIR/$TARGET" # 编译结果检查 if [ $? -eq 0 ]; then echo "✅ 编译成功,生成可执行文件: $OUT_DIR/$TARGET" echo "🔍 依赖库检查:" ldd "$OUT_DIR/$TARGET" || echo "是静态编译程序 ✔" else echo "❌ 编译失败" fi