2011-07-05 45 views
1

我正在開發一個庫,需要確保它與4.1.2編譯(我知道,它沒有帶給我什麼樂趣)。所以在我下載的Fedora 14機器上,編譯並安裝了GCC41。鏈接到CMake和GCC的stdC++ 4.1.2

現在,在我的CMake只更改以下變量 CMAKE_CXX_COMPILER =的/ opt/gcc41 /斌/ C++ 41 CMAKE_C_COMPILER =的/ opt/gcc41 /斌/ gcc41

它編譯罰款,但似乎使用標準庫的錯誤版本。顯然,它拉

/opt/gcc41/bin/c++41 -Wall -Wold-style-cast -Wsign-compare -Wnon-virtual-dtor -Woverloaded-virtual -Wno-long-long -Wno-old-style-cast -g3 -O2 -ffast-math -mmmx -msse -msse2 -msse3 <OBJECT_FILES> -o <EXE_NAME> -rdynamic -lfreeimage -lcxcore -lcv -lml -lhighgui -lcvaux -llapack -lpthread -ltiff -lSM -lICE -lX11 -lXext -lrt -lz -ldl -ltiff -lSM -lICE -lX11 -lXext -lrt -lz -ldl -lusb 


In function `operator<< <std::char_traits<char> >': 
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/ostream:513: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)' 

在從包括... /包括/ C++/4.5.1 /,但我不能看到該庫的版本吧:錯誤(S)我得到這個樣子鏈接到。

有什麼辦法可以控制這個嗎?

回答

2

當你與CMake的配置,指定編譯器配置首次之前。使用環境變量CC和CXX來指定C和C++編譯器:

export CC=/opt/gcc41/bin/gcc41 
export CXX=/opt/gcc41/bin/c++41 
cmake ../source 
make 

開始用乾淨的/空的構建樹,以避免在第一時間CMake的是用不同的編譯器運行的陳舊緩存條目。 (在第一次CMake運行之後,不能更改編譯器而無需重新啓動...)

0

讓你的gcc版本在Fedora中默認:

./configure CC=/path/to/gcc/of/your/choice