Как объединить DLL в EXE в MinGW при компоновке

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

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

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

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


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

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

1 ответ

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

Другие вопросы по тегам