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

时间:2015-06-27 18:14:50

标签: c++ c gcc

我刚刚在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不是最好的选择。

1 个答案:

答案 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是编程中的一个术语,指的是运行时搜索路径   在动态期间使用的可执行文件或库中的硬编码   链接以查找可执行文件或库所需的库。