【问题标题】:MinGW exe reports libgcc_s_seh-1.dll not found even with -static-libgccMinGW exe 报告即使使用 -static-libgcc 也找不到 libgcc_s_seh-1.dll
【发布时间】:2021-09-19 04:29:58
【问题描述】:

我正在使用 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})

当第一行使用静态增强时,生成的 .exe 文件在 Windows 上运行正常,即 libboost_program_options.a。但是,当我想使用动态提升(在上面的代码中)时,在 Windows 上运行 exe 报告缺少 libgcc_s_seh-1.dll。它为什么还要找它?

【问题讨论】:

    标签: cmake mingw cross-compiling mingw32 boost-program-options


    【解决方案1】:

    当第一行使用静态增强时,生成的 .exe 文件在 Windows 上运行正常,即 libboost_program_options.a。但是,当我想使用动态提升(在上面的代码中)时,在 Windows 上运行 exe 报告缺少 libgcc_s_seh-1.dll。它为什么还要找它?

    你已经隐含地回答了你自己的问题,这里:libgcc_s_seh-1.dll 是一个 GCC 运行时 DLL。动态提升不是用-static-libstdc++ -static-libgcc 编译的,所以它取决于libgcc_s_seh-1.dll。 您必须使用这些标志重新编译动态提升。

    【讨论】:

    • 因此,动态提升正在寻找 libgcc_s_seh-1.dll。我该如何解决这个问题?
    • 用-static-libstdc++ -static-libgcc构建提升
    • @BrechtSanders -- 是的。我认为我的回答中暗示了这一点......我会更明确地说明。
    猜你喜欢
    • 2021-04-23
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2021-09-16
    • 2014-01-07
    相关资源
    最近更新 更多