如何在链接时将DLL合并到MinGW中的EXE中

时间:2018-05-01 19:08:58

标签: linker mingw-w64 msys2 gnat ghdl

我正在我的机器上编译GHDL

  • AdaCore GNAT GPL 2017
    这是一个用于Windows的独立Ada编译器,可生成单个可执行文件;
    或者
  • MSYS2 / MinGW64(GCC + GNAT + CLANG,CLANG ++,...)
    这是Windows的GCC编译器工具链。它生成一个可执行文件,需要安装目录中MinGW的少量DLL。

是否可以添加链接器标志以将DLL集成到可执行文件中以减少已发送文件的数量?

需要设置哪些标志才能将所需的依赖项合并到可执行文件中?

在这个GitHub Issue中,我列出了使用LLVM后端的GHDL的所有DLL依赖项:

  • libgcc_s_seh-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll
  • zlib1.dll

1 个答案:

答案 0 :(得分:0)

如果MSYS2开发人员构建了这些库的静态版本,那么/mingw32/lib/mingw64/lib目录中可能存在可用于静态库的静态库。你可以尝试在链接步骤中将-static选项传递给GCC,我认为如果它们可用,它会尝试使用静态版本。我不知道将DLL合并到可执行文件的任何方法,你必须链接到静态库。