Отсутствует libgcc_s_dw2-1.dll
У меня есть Windows 7 64-битная система с последней установленной MinGW (32-битной) вместе с Qt 5.5 SDK (опять же 32-битной), который также поставляется с собственным MinGW. Из-за того, что я не единственный, кто использует систему, я не могу удалить автономный MinGW.
Мой проект использует qmake
и является простым C-проектом (не C++). Все прекрасно работает, но когда я пытаюсь выполнить мой двоичный файл в командной строке, я получаю, что приложение не удалось запустить из-за отсутствия libgcc_s_dw2-1.dll
в системе.
Изучив проблему, я обнаружил, что как автономный MinGW, так и тот, который поставляется вместе с Qt SDK, имеют упомянутую DLL.
- Автономный MinGW -
libgcc_s_dw2-1.dll
находится внутриbin
подкаталог установки MinGW, в которой находятся двоичные файлы (gcc
,g++
,gdb
так далее.) - Qt MinGW -
libgcc_s_dw2-1.dll
находится внутриC:\Qt\Tools\mingw492_32\i686-w64-mingw32\lib
подкаталог, в то время как двоичные файлы компонентов MinGW находятся внутриC:\Qt\Tools\mingw492_32\i686-w64-mingw32\bin
,
Я хотел бы знать, как правильно настроить мой PATH
переменная так, что:
- Приложение запускается правильно
- Никаких конфликтов с автономной установкой MinGW не происходит
Просто примечание: я уже проверил другие посты здесь на SO, но не смог найти решение (возможно, я пропустил его). Я также пытался LIBS += -static
но результат тот же.
1 ответ
Вам просто нужно скопировать эту DLL с вашим исполняемым файлом, то есть:
cp <path-to-qt-install-dir>\qt5.7.0\5.7\mingw53_32\bin\libgcc_s_dw2-1.dll <path-to-dest-dir>
Вы можете обнаружить, что у вас есть другие зависимости, чтобы увидеть, какие другие ваши депозиты вы можете использовать: ldd <your-executable>
, Вам нужно только скопировать dll, специфичные для qt, вы можете увидеть их:
ldd <executable> | grep -i qt
нота
Вы можете статически связать его с помощью следующих команд: -static-libgcc
или же -static
, но я думаю, что вы начинаете сталкиваться с проблемами LGPL, а также вам может понадобиться статически скомпилировать qt из исходного кода - не могу вспомнить для этого конкретного файла.
заметка 2
Извините, ldd для Linux, только что понял, что у вас есть окна, и в этом случае вы можете использовать один или оба из:
ходок зависимости: отсюда
<path-to-qt-bin-folder>\windeployqt.exe <path-to-your-executable>
Я смешал результаты с windeployqt, но если у вас есть какие-либо плагины, это хорошо для сортировки этой части.