使用不同版本的 gcc 和 g++ 进行编译时出现问题
Issue compiling with different version of gcc and g++
我想通过SSH
输入我所在机构的计算机来编译程序。我想通过使用不同版本的gcc
和g++
来编译该程序,即更新的该程序,其中包含默认安装的 repsect。这意味着我不想使用gcc-4.9.2
和g++-4.9.2
而是使用gcc-6.3
和g++-6.3
。我已经可以在我的计算机上找到它们,实际上我有文件夹/opt/gcc-6.3
,所以我不必下载它们。所以我做的是以下几点
export PATH=/opt/gcc-6.3/bin/:$PATH
export LD_LIBRARY_PATH=/opt/gcc-6.3/lib/:$LD_LIBRARY_PATH
但是虽然gcc
似乎有效,但当我尝试用g++
编译c++
程序时,我得到了
./[name_of_the_program].x: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./[name_of_the_program].x)
./[name_of_the_program].x: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./[name_of_the_program].x)
显然,如果这是相关信息,我不会在这台机器上root
。
如果在 64 位计算机上运行,则必须添加
/opt/linux-gnu_6.x.x/lib64
路径也到你的环境。(或者您机器上的哪个路径用于此编译器版本的库(
如果您获得root访问权限,则最好添加(或者您的管理员应该这样做! 您的库路径信息
/etc/ld.so.conf.d/gcc63.conf
并运行sudo ldconfig
.
之后,您应该与ldd
联系方确认满足所有链接要求。
不要这样做:
export PATH=/opt/gcc-6.3/bin/:$PATH
export LD_LIBRARY_PATH=/opt/gcc-6.3/lib/:$LD_LIBRARY_PATH
相反,请添加:
-B/opt/gcc-6.3/lib/
到前端gcc
或g++
的调用选项(假设/opt/gcc-6.3/lib/
确实是直接 包含 GCC 6.3 工具链可执行文件和库(。
请参阅 -Bprefix 选项的文档
例:
$ cat prog.cpp
#include <iostream>
int main()
{
std::cout << "I was compiled with GCC "
<< __GNUC__ << '.' << __GNUC_MINOR__ << '.' << __GNUC_PATCHLEVEL__
<< " to C++ standard " << __cplusplus << std::endl;
return 0;
}
$ which g++-4.9
/usr/bin/g++-4.9
$ which g++-6
/usr/bin/g++-6
$ g++-4.9 -o prog prog.cpp && ./prog
I was compiled with GCC 4.9.4 to C++ standard 199711
$ g++-4.9 -B/usr/lib/gcc/x86_64-linux-gnu/6.2.0 -o prog prog.cpp && ./prog
I was compiled with GCC 6.2.0 to C++ standard 201402
根据其他人的评论,请注意 g++>= 5 与g++
<5 不兼容。
相关文章:
- Rextester 语言编译C++问题
- C++ 多级虚拟继承编译问题
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用 CImg 库的 std::min 和 std::max 的编译问题
- Qt Visual Studio 2015 加载项编译问题
- libssh 问题编译问题未定义的错误
- 在 armhf 上使用 cmake 在 qt 上的编译问题 "Syntax error: wird unexpected (expecting " ) " "
- LLVM 万花筒教程 JIT 编译问题
- PX 转换例程编译问题
- 模板类编译问题与 typedef 变量
- 在 Ubuntu 16.04 LTS 上使用 c++ 编译问题?
- 编译问题与 Ubuntu Linux
- C++编译问题错误 - C2332:<类:缺少标记名称>
- AIX C++映射编译问题
- Ubuntu 下的 Cmake 和 Intel IPP 的编译问题
- 如何解决我在 Ubuntu 19.04 下使用 GLFW 时遇到的这个编译问题?
- wxWebView在Ubuntu上的编译问题
- C++constexpr编译问题
- CMake - OpenVR 编译问题
- C++ SD 总线源文件编译问题