查看某个 bin/so 依赖的链接库
ldd $bin
ldd -v $bin
动态连接库加载顺序
LD_PRELOAD > RPATH > LD_LIBRARY_PATH
LD_PRELOAD=/opt/libstdcxx/lib64/libstdc++.so.6 $bin # 预加载 libstdc++.so.6
Note libc.so.6 预加载问题
无法预加载 libc.so.6 需要通过ld-linux-x86-64.so.2
来加载对应的 libc.so,其中/opt/glibc-2.18/lib/
是对应动态链接库路径,里面需要有libc.so.6
,libdl.so
等/opt/glibc-2.18/lib/ld-linux-x86-64.so.2 --library-path /opt/glibc-2.18/lib/ $bin
RPATH 可以通过环境变量或者是写入到binary中
# 环境变量
LD_RUN_PATH=XXX/lib
gcc -Xlinker -rpath=/default/path/to/libraries -Xlinker -I/default/path/to/libraries/ld.so program.c
export LD_LIBRARY_PATH=XXX
原文:https://www.cnblogs.com/stdpain/p/14738714.html