我刚刚在Ubuntu 14.04上构建了GCC 5.1,它默认使用gcc 4.8。当我尝试用它构建东西时,我发现ld
将使用默认的libstdc ++而不是新构建的。
这是输出:
drizzlex@dx ~/test
$ g++ hello.cpp
drizzlex@dx ~/test
$ 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_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.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_LIBRARY_PATH=/usr/local/lib64/
,它会找到合适的。{/ p>
drizzlex@dx ~/test
$ 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_s.so.1 => /usr/local/lib64/libgcc_s.so.1 (0x00007f4583850000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f458348b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f458410e000)
我想知道如何才能使其正确无误?因为我知道设置LD_LIBRARY_PATH不是最好的选择。
答案 0 :(得分:0)
使用g ++ 5.1进行构建时请使用:
$ g++5.1 hello.cpp -Wl,-rpath,/usr/local/lib64
您不需要设置LD_LIBRARY_PATH。
这是https://en.wikipedia.org/wiki/Rpath
rpath是编程中的一个术语,指的是运行时搜索路径 在动态期间使用的可执行文件或库中的硬编码 链接以查找可执行文件或库所需的库。