Как объединить DLL в EXE в MinGW при компоновке - PullRequest
0 голосов
/ 01 мая 2018

Я компилирую GHDL на моей машине с помощью:

  • AdaCore GNAT GPL 2017
    Это автономный компилятор Ada для Windows, который создает один исполняемый файл;
    или с
  • MSYS2 / MinGW64 (GCC + GNAT + CLANG, CLANG ++, ...)
    Это цепочка инструментов компилятора GCC для Windows. Он создает исполняемый файл, которому требуется несколько DLL-файлов из MinGW в каталоге установки.

Можно ли добавить флаг компоновщика для интеграции библиотек DLL в исполняемый файл, чтобы уменьшить количество отправляемых файлов?

Какие флаги нужно установить, чтобы объединить необходимые зависимости в исполняемый файл?


В этой GitHub Issue я перечислил все зависимости DLL для GHDL с бэкэндом LLVM:

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

1 Ответ

0 голосов
/ 02 мая 2018

Для этих вещей могут быть доступны статические библиотеки в каталоге /mingw32/lib или /mingw64/lib, если разработчики MSYS2 создали статические версии этих библиотек. Вы можете попробовать передать параметр -static в GCC во время шага ссылки, и я думаю, что он попытается использовать статические версии, если они доступны. Я не знаю ни одного способа объединить библиотеки DLL в исполняемый файл, вместо этого вы должны ссылаться на статические библиотеки.

...