2

私はライブラリを開発していて、それが 4.1.2 でコンパイルされることを確認する必要があります (私は知っていますが、それは私に喜びをもたらしません)。そのため、Fedora 14 マシンで、GCC41 をダウンロード、コンパイル、およびインストールしました。

CMake では、次の変数のみを変数 CMAKE_CXX_COMPILER=/opt/gcc41/bin/c++41 CMAKE_C_COMPILER=/opt/gcc41/bin/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)'

.../include/c++/4.5.1/ からインクルードを取得しているようですが、リンク先のライブラリのバージョンがわかりません。

これを制御する方法はありますか?

4

2 に答える 2

3

CMake で構成する場合は、初めて構成する前にコンパイラを指定します。環境変数 CC および CXX を使用して、C および C++ コンパイラを指定します。

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

CMake が別のコンパイラで初めて実行されたときからの古いキャッシュ エントリを回避するために、クリーン/空のビルド ツリーから始めます。(最初に CMake を実行した後に、最初からやり直さずにコンパイラを変更することはできません...)

于 2011-07-06T10:25:06.990 に答える
0

Fedora で gcc のバージョンをデフォルトに設定します。

./configure CC=/path/to/gcc/of/your/choice
于 2011-07-06T09:38:08.860 に答える