LIBRARY_PATH 和 LD_LIBRARY_PATH
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:
- LIBRARY_PATH环境变量用于在*程序编译期间*查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。
- LD_LIBRARY_PATH环境变量用于在*程序加载运行期间*查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。
区别与使用:
- 开发时,设置LIBRARY_PATH,以便gcc能够找到编译时需要的动态链接库。
- 发布时,设置LD_LIBRARY_PATH,以便程序加载运行时能够自动找到需要的动态链接库。
- GCC里的链接器的选项是 -rpath 和 -rpath-link
临时指定动态链接库
LD_LIBRARY_PATH 或 LD_PRELOAD
- 设置LD_LIBRARY_PATH
1 | export LD_LIBRARY_PATH=/home/xxx/Desktop:$LD_LIBRARY_PATH |
其中 /home/plusls/Desktop 为so文件所在的目录
注:这样设置后 pwntools 起的进程也会继承该环境变量,加载此libc
- 设置LD_PRELOAD
终端设置LD_PRELOAD,指定程序运行要加载的动态链接库,如:
1 | LD_PRELOAD=./libc.so.6 ./app |