返回> 网站首页
Linux下so动态库指定搜索路径
yoours2023-03-08 21:16:49
简介一边听听音乐,一边写写文章。
linux环境下编译的程序调用自己的so库与windows有差异,windows下默认在当前目录下寻找dll库,而linux会从系统中寻找。为解决这个问题,就需要在程序编译时增加一项参数,使得程序运行时在当前目录下寻找so库。
1. export LD_LIBRARY_PATH=`具体路径`
例如在终端中输入 export LD_LIBRARY_PATH=./
将某具体路径添加到动态库路径环境变量,但仅当前终端有效
2. 将.so文件放到/lib或/usr/lib目录下(不推荐)
3. 将库文件绝对路径添加到/etc/ls.so.conf文件中,并用ldconfig命令重建ld.so.cache文件(不推荐)
4. 增加编译链接参数 (LDFLAGS = -Wl,--hash-style=sysv,-Bsymbolic,-rpath=./)让程序在当前目录寻找依赖的.so文件 (推荐)
编译链接可执行文件时,增加 -Wl,--rpath=选项,链接器在可执行文件头中记录动态库的路径,动态加载器运行时读取动态库路径,加载动态库
例如curl编译时配置 LDFLAGS=-Wl,-rpath=./,--disable-new-dtags
例如 G_FLAG=-Wl,-rpath,./ 当前目录搜索
文章评论
1519人参与,0条评论