让程序在指定路径寻找库文件 + 库文件搜索顺序

  • 安装到系统对应目录:/usr/lib /usr/local/lib,可以使用ldconfig配置,需要root权限
  • LD_LIBRARY_PATH
  • rpath 在g++中添加-Wl,--rpath -Wl,/a/b/c,即可传给ld阶段,如果用autoconf,libtool只会自动添加一个路径(库文件生成路径),可按上述方式添加额外路径.
    •   该方法需要库文件在固定位置,灵活性不好
  • RUNPATH

GNU加载器,库文件搜索顺序

  1. 如果没有run_path,首先看rpath
  2. LD_LIBRARY_PATH( setuid/setgid程序跳过该阶段)
  3. run_path( setuid/setgid程序跳过该阶段)
  4. /etc/ld/so/cache中查找(可以使用-z nodeflib连接选项取消)
  5. 默认目录/lib /usr/lib(可以使用-z nodeflib连接选项取消)

参考: http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html

原文地址:https://www.cnblogs.com/D3Hunter/p/3174213.html