为了解决c++程序在linux环境的依赖问题,采用静态依赖编译。在运行过程中发生线程接口调用崩溃,排查代码发现问题原因为在静态编译期间由于有的接口没有在初始化时调用会导致没有被编译进执行文件中,为了解决这个问题需要在编译期间增加"-Wl,--whole-archive","-Wl,--no-whole-archive"保证静态库被全量编译到执行文件中
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_link_libraries(${PROJECT_NAME} PRIVATE
"-Wl,--whole-archive"
pthread
"-Wl,--no-whole-archive"
)
endif()