Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
链接到stdc++;使用CMake和GCC 4.1.2_Cmake_Linker Errors_Gcc4 - Fatal编程技术网

链接到stdc++;使用CMake和GCC 4.1.2

链接到stdc++;使用CMake和GCC 4.1.2,cmake,linker-errors,gcc4,Cmake,Linker Errors,Gcc4,我正在开发一个库,需要确保它是用4.1.2编译的(我知道,这不会给我带来任何乐趣)。所以我在Fedora14机器上下载、编译并安装了GCC41 现在在CMake中,我只将以下内容更改为变量 CMAKE_CXX_编译器=/opt/gcc41/bin/c++41 CMAKE_C_编译器=/opt/gcc41/bin/gcc41 它编译得很好,但似乎使用了错误版本的标准库。我得到的错误如下所示: /opt/gcc41/bin/c++41 -Wall -Wold-style-cast -Wsign-co

我正在开发一个库,需要确保它是用4.1.2编译的(我知道,这不会给我带来任何乐趣)。所以我在Fedora14机器上下载、编译并安装了GCC41

现在在CMake中,我只将以下内容更改为变量 CMAKE_CXX_编译器=/opt/gcc41/bin/c++41 CMAKE_C_编译器=/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)'
/opt/gcc41/bin/c++41-墙-世界风格演员-Wsign比较-Wnon虚拟dtor-Woverloaded虚拟-Wno long-Wno旧风格演员-g3-O2-ffast数学-mmmx-msse-msse2-msse3-o-rdynamic-lfreeimage-lcxcore-lcv-lml-lhighgui-lcvaux-LLAPCK-lpthread-ltiff-lSM-lICE-lX11-LXT-lrt-lz-ldl-ltiff-lSM-lICE-lXext-轻轨-lz-ldl-lusb

在函数`operator中,将您的gcc版本设置为Fedora中的默认版本:

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

使用CMake进行配置时,请在首次配置之前指定编译器。使用环境变量CC和CXX指定C和C++编译器:

export CC=/opt/gcc41/bin/gcc41
export CXX=/opt/gcc41/bin/c++41
cmake ../source
make
从干净/空的构建树开始,以避免在第一次使用其他编译器运行CMake时出现过时的缓存项。(第一次运行CMake后,如果不重新启动,则无法更改编译器…)