【发布时间】:2017-09-19 16:44:12
【问题描述】:
我正在尝试编译一个程序,我需要在共享库路径上设置一个前缀路径,我尝试使用-Wl,-rpath -Wl,-dynamic-linker,而我从ldd 得到的是:
linux-vdso.so.1 => (0x00007fff75336000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f19d55b8000)
/pathtolib/lib64/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x000055d3d67e1000)
但我期望得到的是:
linux-vdso.so.1 => (0x00007fff75336000)
libc.so.6 => /pathtolib/lib/x86_64-linux-gnu/libc.so.6 (0x00007f19d55b8000)
/pathtolib/lib64/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x000055d3d67e1000)
我真的需要设置这个并强制程序对所有共享库使用非默认路径 (/pathtolib)。
这是我用来编译的命令:
gcc list/list.c -o bin/list -Wl,-rpath,/pathtolib -Wl,--dynamic-linker,/pathtolib/lib64/ld-linux-x86-64.so.2
我做错了什么?! :|
【问题讨论】:
-
查看这个名为 patchelf 的实用程序。它用于更改 ELF 二进制文件的动态链接器和 RPATH。