返回> 网站首页 

Linux下so动态库指定搜索路径

yoours2023-03-08 21:16:49 阅读 1141

简介一边听听音乐,一边写写文章。

      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,./ 当前目录搜索

微信小程序扫码登陆

文章评论

1141人参与,0条评论