[英]MinGW g++/gcc not compiling with proper path and version command working
[英]Issue compiling with different version of gcc and g++
我想通过SSH
输入我所在机构的计算机来编译程序。 我想使用不同版本的gcc
和g++
编译该程序,即使用repsect的最新版本安装到默认安装的版本。 这意味着我要使用gcc-6.3
和g++-6.3
而不是gcc-4.9.2
和g++-4.9.2
。 我可以在我的计算机上找到它们,实际上,我的文件夹是/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
comand检查,是否满足所有链接的要求。
不要这样做:
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是ABI与g++
<5不兼容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.