Есть ли способ статически связать сгенерированный файл .exe от MSYS2 gcc? Я пробовал много способов, но никто из них не работал. Для всех созданных файлов .exe требуется msys-2.0.dll, от которых я хочу избавиться. До сих пор я пытался включить параметр -ststic, -static-libgcc и передать эти параметры в -Wl, но не работает. Я попытался удалить двоичный файл или нет, без разницы, но размер выходного файла. Я знаю, что могу сделать это в MSYS1.0 gcc или mingw-w64 из Linux, но я не могу это сделать в MSYS2.0. После запуска gcc -v он показывает, что цепочка инструментов действительно скомпилирована с помощью --enable-static, а также --enable-shared и -enable-shared-libgcc. В любом случае я могу получить статическую библиотеку libgcc?MSYS2 статический вывод ссылок двоичный
1
A
ответ
2
Ну, я решил. Из документов MSYS2 говорится, что MSYS2 предназначен для смягчения аддона и ошибок DLL с помощью общего общего libc. Следовательно, он не предназначен для создания статически связанного исполняемого файла.
Однако вы можете установить пакет mingw-w64 из pacman и запустить mingw64.exe для запуска оболочки вместо msys2.exe. Делая это, вы можете установить и запустить исходный компилятор mingw-w64 из bash вместо версии MSYS2.
Исполняемый файл, созданный исходным пакетом mingw-w64, статически связан. Вместо msys-2.0.dll требуется повсеместно доступный файл msvcrt.dll.