Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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
C++ 在我自己构建GCC之后,如何配置共享库搜索路径?_C++_C_Gcc - Fatal编程技术网

C++ 在我自己构建GCC之后,如何配置共享库搜索路径?

C++ 在我自己构建GCC之后,如何配置共享库搜索路径?,c++,c,gcc,C++,C,Gcc,我刚刚在Ubuntu 14.04上构建了GCC 5.1,默认为GCC 4.8。当我尝试用它构建东西时,我发现ld将使用默认的libstdc++而不是新构建的libstdc++。 以下是输出: drizzlex@dx~/试验 $g++hello.cpp drizzlex@dx~/试验 $ldd a.out linux vdso.so.1=>(0x00007ffde0d25000) libstdc++.so.6=>/usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x

我刚刚在Ubuntu 14.04上构建了GCC 5.1,默认为GCC 4.8。当我尝试用它构建东西时,我发现
ld
将使用默认的libstdc++而不是新构建的libstdc++。 以下是输出:

drizzlex@dx~/试验
$g++hello.cpp
drizzlex@dx~/试验
$ldd a.out
linux vdso.so.1=>(0x00007ffde0d25000)
libstdc++.so.6=>/usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x00007fa181ad2000)
libm.so.6=>/lib/x86_64-linux-gnu/libm.so.6(0x00007fa1817cc000)
libgcc_.so.1=>/lib/x86_64-linux-gnu/libgcc_.so.1(0x00007fa1815b5000)
libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007fa1811f0000)
/lib64/ld-linux-x86-64.so.2(0x00007fa181dfd000)
如果我使用
$export LD\u LIBRARY\u PATH=/usr/local/lib64/
,它会找到正确的

drizzlex@dx~/试验
$ldd a.out
linux vdso.so.1=>(0x00007fffeeaf5000)
libstdc++.so.6=>/usr/local/lib64/libstdc++.so.6(0x00007f4583d92000)
libm.so.6=>/lib/x86_64-linux-gnu/libm.so.6(0x00007f4583a67000)
libgcc_.so.1=>/usr/local/lib64/libgcc_.so.1(0x00007f458385000)
libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007F4583480000)
/lib64/ld-linux-x86-64.so.2(0x00007F4584100E000)

我想知道我应该怎么做才能使它正确?因为我知道set LD_LIBRARY_PATH不是最佳选择。

对于使用g++5.1构建,请使用以下方法:

$ g++5.1 hello.cpp -Wl,-rpath,/usr/local/lib64
您不需要设置LD_LIBRARY_路径

这是从

rpath是编程中的一个术语,指的是运行时搜索路径 在可执行文件或库中硬编码,在动态过程中使用 链接以查找可执行文件或库所需的库


在/etc/ld.so.conf.d/下,有一些属于默认gcc的conf文件,我应该为我的gcc 5.1自己写一个吗?或者我应该编辑现有的?还是什么?你在哪里安装了gcc-5.1?我指的是
--前缀
选项。为什么LD\u LIBRARY\u路径不是最佳选择?无论如何,您还应该确保指向更新的include路径(例如通过设置CPLUS_include_path),您可以使用
/usr/local/lib64
添加一个新文件
/etc/ld.conf.d/gcc-5.1.conf
,然后运行
ldconfig
。我发现libc与gcc是分开的,而libstdc++不是?因为我发现有两个libstdc++,libstdc++.so.6.0.19和libstdc++.so.6.0.21,我认为它们分别与GCC4.8和5.1一起提供。但是,我认为只有一个libc,即/lib/x86_64-linux-gnu/libc.so.6。是的,libc与gcc是分开的,例如在安装了操作系统的linux libc上。libstdc++与g++一起提供,它是g++的一部分:-