По MinGW.exe требует несколько dll gcc независимо от кода?
при компиляции с MinGW я должен скопировать некоторые dll-файлы из каталога MinGW bin до запуска exe (даже при использовании " - static "и/или"- static-libstdc++".) Как мне это изменить? Есть ли специальная сборка MinGW, которую я должен использовать? В конечном счете, я хочу иметь возможность запускать программу только с exe в каталоге (и без набора переменных среды windows.) Эти файлы являются:
- libstdc++-6.dll файлы
- libgcc_s_seh-1.dll файлы
- libwinpthread-1.dll файлы
и вот полный список шагов I fallow:
- Открыть Код::Блоки
- Выберите "Файл- > Создать - >Проект - > Консоль"
- заполните настройки проекта для проекта "Hello World"
- щелкните правой кнопкой мыши проект->параметры построения...- >Hello World (корневая цель) - >другие параметры
- введите "- static " (или "- static-libstdc++") под уже установленным "- fexceptions"
- CTRL-F9: построить проект (без выполнения)
- перейдите в Проводник Windows и запустите встроенный " Hello World.файл EXE.
- нажмите "ОК", когда появится сообщение " Ошибка: libstdc++-6.dll отсутствует на вашем компьютере."
- копировать " libstdc++-6.dll "из каталога /MinGW/bin/ в" Hello World.каталог ехе".
- Запустите " Hello World.EXE-файл"
- нажмите " OK" для сообщения " ошибка: libgcc_s_seh-1.dll отсутствует на вашем компьютере."
- копировать "libgcc_s_seh-1.dll " в " Привет, Мир.каталог ехе".
- повторить и в конечном итоге скопировать " libwinpthread-1.библиотека DLL" более чем хорошо.
-
посмотреть
Hello World!
Edit: Моя командная строка:
g++.exe -Wall -fexceptions -static -static-libgcc -static-libstdc++ -g -static-libgcc -static-libstdc++ -L. -c "C:Users______DesktopHello Worldmain.cpp" -o objDebugmain.o
g++.exe -o "binDebugHello World.exe" objDebugmain.o
со всеми dll-файлами, упомянутыми выше. И, на всякий случай, код есть:
// main.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
3 ответов
ваши команды не правы !
перейдите в каталог, где ваш main.cpp файл есть, и попробуйте следующее.
g++.exe -Wall -c -g main.cpp -o obj\Debug\main.o
g++.exe -static -static-libgcc -static-libstdc++ -o "bin\Debug\Hello World.exe" obj\Debug\main.o
тогда вам больше не нужно будет копировать DLL (для вашей программы Hello World).
другие Примечания:
инструкция по установке MinGW рекомендует установить
c:\minGW;c:\MinGW\bin;
к переменной среды PATH.
нормально the
-static -static-libgcc -static-libstdc++
параметры компоновщика должны работать (попробуйте все 3 из них сразу). Но не для libwinpthread-1.dll
.
кроме того, попробуйте clean
до перекомпиляции.
нет команды "-static-something".
только стандартные библиотеки libgcc и libstdc++ можно установить в статическое соединение.
для других библиотек вы сначала переключаетесь на статическую связь с "- static", а затем перечисляете библиотеки для включения с отдельными команды, т. е. "-lpthread".
-static-libgcc
может быть плохой идеей, если используются исключения. ссылка параметры документации утверждает, что
есть несколько ситуаций, в которых приложение должно использовать общий libgcc вместо статической версии. Наиболее распространенные из них когда приложение хочет бросить и поймать исключения через различные общие библиотеки. В этом случае каждая из библиотек а также само приложение должно использовать shared на libgcc.
люди все еще застряли с этой проблемой, в Code:: Blocks пытаются перестроить проект. У меня была та же проблема, но восстановление моего проекта помогло решить проблему.