Связывание с флагом -static-libstdc++ в MinGW 4.7.1

Пытаюсь скомпилировать (Allegro 5) на MinGW 4.7.1
(используя Code::Blocks 12.11 на Win 7)
с флагами компилятора
(напишите их в Project :: Linker settings :: Other linker settings ):

-static-libgcc
-static-libstdc++

Результат:

нераспознанный параметр командной строки '-static-libstdc++'

Как это решить?


person topright gamedev    schedule 08.01.2013    source источник
comment
Этот вопрос принадлежит superuser.com   -  person Madbreaks    schedule 09.01.2013
comment
Блин, на третьем сайте никакой помощи...   -  person topright gamedev    schedule 09.01.2013
comment
Это сайт контроля качества по темам программирования. Проверьте ссылку в моем комментарии.   -  person Madbreaks    schedule 09.01.2013
comment
Компиляция игрового движка — это проблема программирования. Нет?   -  person topright gamedev    schedule 09.01.2013
comment
Вопрос о суперпользователе: superuser.com/questions/530165/   -  person topright gamedev    schedule 09.01.2013
comment
На stackoverflow.com есть много таких вопросов, см. Ресурсы.   -  person topright gamedev    schedule 09.01.2013
comment
ИМХО это конечно не по теме. Я думаю, что проблемы/ошибки компиляции кода, выдаваемые компилятором C++, относятся к теме.   -  person Victor Stafusa    schedule 13.05.2016


Ответы (3)


Что говорит g++ --version? Я не знаю точную версию, когда она была представлена, но -static-libstdc++ добавлена ​​сравнительно недавно. Раньше вам приходилось делать что-то вроде -static -lstdc++ -dynamic. (Если версия компилятора 4.7.1, это не должно быть проблемой, но я не знаю, как версии MinGW сопоставляются с фактической версией компилятора.)

person James Kanze    schedule 08.01.2013
comment
Вау, там написано 4.6.2. Я был уверен, что это 4.7.1. так как в дистрибутиве есть mingw32-gcc-4.7.1.exe. - person topright gamedev; 09.01.2013
comment
Также в дистрибутиве есть директория gcc\mingw32\4.7.1. Какой хаос. - person topright gamedev; 09.01.2013
comment
@toprightgamedev IIRC (прошло некоторое время с тех пор, как я установил MingW --- мой текущий компьютер - Linux), есть несколько версий, которые вы можете выбрать на странице загрузки. Но самым верным утверждением в этом отношении является то, что говорит g++ --version, поскольку оно скомпилировано. Но, как сказал другой постер: найдите, где расположены библиотеки, и посмотрите, присутствует ли libstdc++.a. Если нет, загрузите один. И убедитесь, что он находится в том же каталоге; если g++ найдет libstdc++.so в более раннем каталоге, он не будет искать дальше. - person James Kanze; 09.01.2013
comment
Я установил явный путь к libstdc++.a и скомпилировал только с другими параметрами компоновщика: -static-libgcc. Там написано: undefined reference to _Unwind_Resume'` и undefined reference to __gxx_personality_v0' ` - person topright gamedev; 09.01.2013
comment
Это также может произойти при использовании mingw с флагами компоновщика -static-libgcc -static-libstdc++. Подробнее читайте здесь: stackoverflow.com /вопросы/50779224/ - person vgulkevic; 25.10.2020

Я не проверял, но попробую разделить как -static -libstdc++

person hmatar    schedule 08.01.2013
comment
не могу найти -libstdС++ - person topright gamedev; 09.01.2013
comment
в MinGW/lib/gcc/mingw32 есть libstdc++.a - person topright gamedev; 09.01.2013
comment
@toprightgamedev Хороший вопрос. Если статической библиотеки нет, g++ не может связать ее. (Если нет, это немного глупо, потому что я не могу придумать ни одного случая, когда вы хотели бы динамически связать стандартную библиотеку С++) - person James Kanze; 09.01.2013
comment
Да, MinGW 4.7.1 (который был установлен с Code::Blocks 12.11) имеет только libstdc++.a (поиск по libstdc) - person topright gamedev; 09.01.2013
comment
Я хотел спросить об этом на форумах Code::Blocks, но все еще жду одобрения регистрации от администратора... :] - person topright gamedev; 09.01.2013
comment
Замените -libstdc++ на lstdc++, я думаю... - person While-E; 12.02.2018

Следующая ссылка может вам помочь. В нем объясняется, как связать статическую библиотеку на С++ http://www.trilithium.com/johan/2005/06/static-libstdc/

person hmatar    schedule 08.01.2013
comment
Ссылка мертва. - person SolarBear; 07.08.2019