我正在使用GCC 4.4.7附带的RHEL 6.7,并希望将GCC升级到devtoolset-3附带的4.9.2。我正在使用cmake来编译我的C ++代码。
Red Hat提供的devtoolset-3安装新的GCC:
的/ opt / RH / devtoolset-3 /根的/ usr /斌/
我想使用新的编译器GCC 4.9.2编译我的代码,但二进制文件必须在" vanilla" RHEL 6.7安装所以我试图将二进制文件与此版本RHEL附带的标准库链接,这些库来自GCC 4.4.7( libstdc ++。so.6.0.13 )。
我已将这些行添加到CMake:
set(CMAKE_C_COMPILER "/opt/rh/devtoolset-3/root/usr/bin/cc")
set(CMAKE_CXX_COMPILER "/opt/rh/devtoolset-3/root/usr/bin/c++")
我有一些缺少库的链接问题所以我不得不向GCC命令行添加一些参数:
set(COMPILER_UPGRADE_FLAGS "-pthread -luuid -I/usr/include/c++/4.4.7/")
set(CMAKE_CXX_FLAGS_DEBUG "....... {COMPILER_UPGRADE_FLAGS}")
在这些更改后,我能够编译我的代码。但是,在运行单元测试时,我遇到了分段错误。经过一些调试后,我发现二进制文件已正确链接到RHEL 6.7附带的C ++库,但代码是使用错误的包含文件编译的,其中包含:
的/ opt / RH / devtoolset-3 /根的/ usr /包括/ C ++ / 4.9.2 /
为了避免这个问题,我想我会让GCC使用库的原始版本附带的头文件,所以我已经将这个命令行选项添加到GCC:
-I/usr/include/c++/4.4.7/
然而,在这样做之后我再也无法编译我的程序了,我发生了很多这样的错误:
/ usr / include / c ++ / 4.4.7 / bits / stl_function.h:711:64:错误:运算符 ' ||'没有正确的操作数
#if!defined(__ GXX_EXPERIMENTAL_CXX0X__)|| _GLIBCXX_DEPRECATED
此时我有点被阻止,想知道是否有人可以帮助我。我想做什么甚至可能?