ELF动态链接
一.链接器ld-linux.so.2
链接器在.interp section中
动态库运行时查找动态库的顺序:
1 (ELF only).dynamic 中的RPATH, 编译时使用 -Wl,-rpath=指定,例如-Wl,-rpath=. 程序执行时会在当前目录下寻找动态库。
-Wl,-rpath=支持环境变量,如export MYDIR=/mnt; -Wl,-rpath=${MYDIR}则搜索目录为/mnt, 编译后不随MYDIR的改变而改变。
2 LD_LIBRARY_PATH Except if the executable is a set-user-ID/set-group-ID binary, in which case it is ignored.
3 (ELF only) Using the directories specified in the DT_RUNPATH dynamic
section attribute of the binary if present.
4 /etc/ld.so.cache中的库, 使用-z nodeflib选项时 会忽略/lib,和/usr/lib
/etc/ld.so.conf 中指定的目录,一般是/etc/ld.so.conf.d,在此目录中添加PATH, 运行ldconfig来更新/etc/ld.so.cache,就可以了
5 In the default path /lib(64位平台:/lib64), and then /usr/lib(64位平台:/usr/lib64). If the binary was linked with the -z nodeflib linker option, this step is skipped.