linux系统动态库的连接

前言:在应用程序开发过程中,难免会用到第三方库,有的是开源的第三方库,有的是不开源的,还有的是自己写的库。上篇文章总结了应用程序调用静态库《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,设置变量值为动态库所在的目录,如下图所示:

linux系统动态库的连接_第1张图片

 设置完后保存,并在终端输入命令:source /etc/bash.bashrc,使之立即生效。如要追加共享动态库,则继续在后面添加路径,如下图所示:

linux系统动态库的连接_第2张图片

2.2 在/etc/ld.so.cache中设置

      在/etc/ld.so.conf.d/路径下的文件,在系统启动时都会设置为共享的动态库,应用程序在运行时会自动加载该目录下文件中的动态库。如设置opencv为共享库,则在该目录下添加opencv4.conf文件,并在文件中添加动态库目录位置,添加完后保存,并输入命令:sudo ldconfig,该命令会重建/etc/ld.so.cache文件。如动态库安装在/usr/lib/文件夹中,那么ld默认能够找到,无需其他操作。

linux系统动态库的连接_第3张图片

3. ldd命令验证

当应用程序生成后,可使用命令:ldd 应用程序名,查看应用程序所连接动态库的具体路径及名称。 如下图所示:

linux系统动态库的连接_第4张图片

 

你可能感兴趣的:(Ubuntu系统,linux,共享库,动态库连接,应用程序)