Как объединить 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 в исполняемый файл, вместо этого вы должны ссылаться на статические библиотеки.