2009-07-13 55 views
1

試圖使用RHEL5.3 GCC 4.3.2編譯器在該平臺上構建我的軟件。無論我使用-O2進行編譯時的嘗試,我都會得到以下錯誤,但無需優化即可正常生成。有任何想法嗎?在RHEL 5.3和libstdC++。so上與GCC 4.3.2鏈接時出錯。任何GCC大師?

/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版本不匹配?

回答

1

原來是RHEL 5.3中的GCC bug: - /。 https://bugzilla.redhat.com/show_bug.cgi?id=493929。我發送了一封電子郵件給維護者Jakub Jelinek,他說RHEL 5.4(即將發佈)將有一個修復程序,並且會碰到GCC 4.4。

解決方法是使用-fno-inline,但這有一些明顯的缺點。

0

您似乎遇到visibility問題 - 我們可以看到您的完整命令行嗎?

例如,-fvisibility-inlines-hidden在不同的優化級別可能會發生變化,因爲GCC決定內聯不同的東西。

+0

對於某個組件: /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項目 – 2009-07-13 21:57:07

0

它只發生在優化。這是否提供了線索?