Ошибка связывания с GCC 4.3.2 на RHEL 5.3 и libstdc++.so. Есть гуру GCC?

Пытаюсь использовать компилятор RHEL5.3 GCC 4.3.2 для создания своего программного обеспечения на этой платформе. Я получаю следующую ошибку независимо от того, что я пытаюсь компилировать с -O2, но он отлично строится без оптимизации. Есть идеи?

/usr/bin/ld: myapp: hidden symbol `void std::__ostream_fill<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, long)' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output

В RHEL5.3 я использую /usr/bin/g++43 для компиляции и компоновки. Правильный libstdc++.so находится здесь:

/usr/lib/gcc/i386-redhat-linux6E/4.3.2/libstdc++.so

который представляет собой текстовый файл, содержащий INPUT ( -lstdc++_nonshared /usr/lib/libstdc++.so.6 ).

Не будет ли это не соответствовать версии системы stdlibc++ 4.1?


person Kevin Bowling    schedule 13.07.2009    source источник


Ответы (3)


Оказывается, это ошибка GCC в RHEL 5.3 :-/. https://bugzilla.redhat.com/show_bug.cgi?id=493929. Я отправил электронное письмо сопровождающему, Якубу Елинеку, который сказал, что в RHEL 5.4 (который должен выйти в ближайшее время) будет исправление, а также переход на GCC 4.4.

Обходным путем является использование -fno-inline, но это имеет некоторые очевидные недостатки.

person Kevin Bowling    schedule 25.07.2009

Похоже, вы столкнулись с проблемами с видимостью — можем ли мы увидеть вашу полную командную строку?

Например, что -fvisibility-inlines-hidden может меняться на разных уровнях оптимизации, потому что GCC решает встраивать разные вещи.

person ephemient    schedule 13.07.2009
comment
Для компонента: /usr/bin/g++43 -c -pipe -Wextra -Wcast-qual -Wno-long-long -m32 -O2 -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -D_REENTRANT -D_GNU_SOURCE - DQT_NO_DEBUG -DQT_WEBKIT_LIB [различные включения и т. д.] Для ссылки: /usr/bin/g++43 -Wl,-O1 -Wl,-rpath,/home/hudson/qt4/lib -o myapp [... тонна файлов .o] [различные статические и общие библиотеки] Это проект qmake/qt 4.5 - person Kevin Bowling; 14.07.2009
comment
Что ж, я бы предпочел, чтобы вы сделали это редактированием вопроса, а не комментарием, ну да ладно :) Хм, так что это не совсем очевидно из этого; Я должен попытаться найти небольшой тестовый пример, чтобы воспроизвести это. - person ephemient; 14.07.2009
comment
Мне удалось воспроизвести это с помощью последнего снимка Gnucap (gnucap.org/devel) — вероятно, RHEL 5.3 Специально для GCC Я установил CC=/usr/bin/gcc43 CXX=/usr/bin/g++43 LINK=/usr/bin/g++43, затем запустил configure и make. Та же ошибка - person Kevin Bowling; 23.07.2009

Это происходит только при оптимизации. Это дает подсказку?

person Community    schedule 24.07.2009