我正在使用CMake在Linux for Windows上交叉编译boost::program_options。在我指定的CMake中
set(Boost_LIBRARIES /usr/local/win64/lib/libboost_program_options.dll)
set(Boost_INCLUDE_DIR /usr/local/win64/incldue)
include_directories(${Boost_INCLUDE_DIR})
target_link_libraries(main.exe -static-libstdc++ -static-libgcc ${Boost_LIBRARIES})当第一行使用静态boost,即libboost_program_options.a时,生成的.exe文件在Windows上运行正常。但是,当我想要使用动态boost (在上面的代码中)时,在Windows上运行exe会报告缺少libgcc_s_seh-1.dll。它为什么要寻找它呢?
发布于 2021-07-09 01:26:26
当第一行使用static boost,即libboost_program_options.a时,生成的.exe文件在Windows上运行正常。但是,当我想要使用动态boost (在上面的代码中)时,在Windows上运行exe会报告缺少libgcc_s_seh-1.dll。它为什么要寻找它呢?
您已经隐式地回答了您自己的问题:libgcc_s_seh-1.dll是一个GCC运行时动态链接库。Dynamic boost不是用-static-libstdc++ -static-libgcc编译的,所以它依赖于libgcc_s_seh-1.dll。你必须用这些标志重新编译。
https://stackoverflow.com/questions/68306155
复制相似问题