如何让linux加载当前目录的动态库?

如何让linux加载当前目录的动态库?,第1张

linux 加载当前目录的动态库的方法是:设置合适的环境变量LD_LIBRARY_PATH。

设置方法有以下三种:

1、临时修改,log out之后就失效

在terminal中执行:export LD_LIBRARY_PATH=./

2、让当前帐号以后都优先加载当前目录的动态库

修改~/.bash_profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

3、让所有帐号从此都优先加载当前目录的动态库

修改/etc/profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

1、下载源码,解压缩sqlite-autoconf-3300100.tar.gz

2、进入解压目录,执行:

#:./configure --host=arm CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ --prefix=/usr

其中--host=要运行程序的主机

CC/CXX为用到的交叉编译工具链

--prefix=安装目录

3、make

将在当前文件目录下,自动生成可执行文件sqlite3及静态库文件sqlite3.a文件;

4、sudo make install

此命令会将可执行文件及静态库文件拷贝至安装目录中(也可手动拷贝)

5、以上步骤生成的可执行文件包含大量调试信息,文件比较大,可使用strip命令去掉其中的调试信息;

#:arm-linux-gnueabi-strip sqlite3

6、生成动态库文件:

arm-linux-gnueabi-gcc sqlite3.c -lpthread -ldl -fPIC-shared-o libsqlite3.so

交叉编译sqlite3,生成动态库

标签:ref gcc host pthread strip config 安装 目录 工具链

一、添加附加包含目录

      法1:-I path(path为头文件路径

      法2:将头文件拷贝到 /usr/local/include中

      相当于VS中添加包含路径。

二、添加依赖库

       法1,编译阶段,g++编译器编译:

       -L path –lcaffe(path为附加库目录路径;-l指定附加依赖项,比如-lcaffe表示附加libcaffe.so动态库文件)。

执行阶段,在工作目录或环境变量中搜索dll文件:

       添加环境变量:

2.1 /etc/ld.so.conf 文件中方法:

添加库目录,使其成为共享库:

2.1.1、 打开文件:sudo gedit /etc/ld.so.conf

2.1.2、在文件中添加路径(如libnnpack.so的路径)

2.1.2、使其生效:sudo ldconfig

2.2     export方法,参考:http://blog.csdn.net/xzzppp/article/details/53305120

VS中添加附加库目录路径和附加依赖项,分别如下图所示:

法2,在编译阶段直接指定: path/libcaffe.so(path为附加库目录路径,libcaffe.so为动态库,在执行阶段可以直接运行)

法3,, Linux动态库的默认搜索路径是/lib和/usr/lib,将动态库拷贝到这两个文件夹下面。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11352953.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存