前言:在应用程序开发过程中,难免会用到第三方库,有的是开源的第三方库,有的是不开源的,还有的是自己写的库。上篇文章总结了应用程序调用静态库《linux中静态库编译与使用》,本文总结了几种在应用程序中快速准确的调用第三方库的方式。
目录
1. 通过绝对路径连接
2. 设置动态库为共享库
2.1 设置环境路径
2.2 在/etc/ld.so.cache中设置
3. ldd命令验证
应用程序调用第三方库一般有两大类方式,通过绝对路径连接动态库,以及动态库作为共享库连接到应用程序,动态库设置为共享库一般有以下几种方式:
(1)在/etc/bash.bashrc文件中设置为环境变量LD_LIBRARY_PATH
(2)在/etc/ld.so.cache文件列表中设置
按照(1)(2)的顺序寻找动态库,找到库文件后将其载入内存,所以应用程序调用动态库一般有以下几种方式:
1. 通过绝对路径连接
g++ main.cpp -L/usr/local/lib/ -ltest -o main
通过设置绝对路径/usr/local/lib/,将应用程序连接到/usr/local/lib/目录下的libtest.so动态库。
2. 设置动态库为共享库
2.1 设置环境路径
打开/etc/bash.bashrc文件
sudo gedit /etc/bash.bashrc
在文件末尾添加环境变量LD_LIBRARY_PATH,设置变量值为动态库所在的目录,如下图所示:
设置完后保存,并在终端输入命令:source /etc/bash.bashrc,使之立即生效。如要追加共享动态库,则继续在后面添加路径,如下图所示:
2.2 在/etc/ld.so.cache中设置
在/etc/ld.so.conf.d/路径下的文件,在系统启动时都会设置为共享的动态库,应用程序在运行时会自动加载该目录下文件中的动态库。如设置opencv为共享库,则在该目录下添加opencv4.conf文件,并在文件中添加动态库目录位置,添加完后保存,并输入命令:sudo ldconfig,该命令会重建/etc/ld.so.cache文件。如动态库安装在/usr/lib/文件夹中,那么ld默认能够找到,无需其他操作。
3. ldd命令验证
当应用程序生成后,可使用命令:ldd 应用程序名,查看应用程序所连接动态库的具体路径及名称。 如下图所示: