链接不同的glibc

时间:2013-08-15 05:37:51

标签: linker g++ glibc

我将glibc-2.18安装到我的主目录中,并希望将应用程序链接到它:

$ g++ -pthread -o tsx_test tsx_test.cpp -Wl,--rpath=/home/hl/lib/ \
  -Wl,--dynamic-linker=/home/hl/lib/ld-linux-x86-64.so.2

使用g ++ 4.7.3编译和链接工作正常,但执行时失败:

$ ./tsx_test
./tsx_test: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

/ usr / lib / x86_64-linux-gnu / libstdc ++。so.6肯定存在,当我编译时没有“--rpath”相同的libstdc ++。so.6被链接,一切正常。

$ ldd tsx_test
linux-vdso.so.1 =>  (0x00007fff42bd4000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f42aa3aa000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f42aa194000)
libpthread.so.0 => /home/hl/lib/libpthread.so.0 (0x00007f42a9f75000)
libc.so.6 => /home/hl/lib/libc.so.6 (0x00007f42a9bc8000)
libm.so.6 => /home/hl/lib/libm.so.6 (0x00007f42a98c5000)
/home/hl/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f42aa6c9000)

1 个答案:

答案 0 :(得分:1)

  

/ usr / lib / x86_64-linux-gnu / libstdc ++。so.6绝对存在

...但你的libc看不到那里。

你可以设置你的RPATH:-Wl,-rpath=/home/hl/lib:/usr/lib,或者你可以编辑/home/hl/etc/ld.so.conf并告诉你的libc查看/usr/lib之后 {{1 }}).J

  

这是一个权限问题,我不能混合root拥有和用户拥有的库吗?

没有。您可以明确地混合和匹配根拥有和用户拥有的库。