Linux加载第三方库
- 一、加载动态库
- 方法一:ldconfig指令
- 方法二:LD_LIBRARY_PATH
- 方法三:编译时指定路径
- #动态库搜索优先级
- 二、加载静态库
- 方法一:设置环境变量 LIBRARY_PATH
- 方法二:编译时 -L 指定
- 方法三:添加到系统默认搜索路径
- 三、头文件添加:设置环境变量
- 方法一:编译时用-I 指定路径
- 方法二:设置环境变量
- 方法三:添加到系统默认搜索路径
- #头文件查找优先级
- 列出动态库依赖关系指令
动态链接和静态链接区别:
静态链接是在链接阶段将所有目标文件(静态库文件等)打包到可执行文件。
动态连接是在链接阶段不会将动态库文件打包到可执行文件,而是在程序运行时被载入。
一、加载动态库
方法一:ldconfig指令
由于 /etc/ld.so.conf文件中指定了默认的动态链接库查找路径。
- 在/etc/ld.so.conf.d文件夹在创建xxxx.conf,并写入路径
- ldconfig
方法二:LD_LIBRARY_PATH
export LD_LIBRARY_PATH=路径:$ LD_LIBRARY_PATH
方法三:编译时指定路径
gcc/g++ -L[/xx/xx](路径) -l[库名字](去掉lib和.so后缀)
#动态库搜索优先级
- 编译目标代码时指定的动态库搜索路径;
(1)在编译时通过gcc 的参数"-Wl,-rpath,“指定。当指定多个动态库搜索路径时,路径之间用冒号”:"分隔。
(2)用编译选项-L来指定动态链接库所在的目录(供编译器查找用),同时用-l选项指定缩写的动态链接库名。 - 环境变量LD_LIBRARY_PATH
- 配置文件/etc/ld.so.conf中指定的动态库搜索路径
- 默认的动态库搜索路径:/lib; /usr/lib; /usr/local/lib
二、加载静态库
静态库后缀:linxx.a(linux),libxx.lib(windows)
方法一:设置环境变量 LIBRARY_PATH
export LIBRARY_PATH=路径:$ LIBRARY_PATH
方法二:编译时 -L 指定
gcc/g++ -L[/xx/xx](路径) -static -l[库名字](去掉lib和.a后缀)
方法三:添加到系统默认搜索路径
/lib; /usr/lib; /usr/local/lib
三、头文件添加:设置环境变量
方法一:编译时用-I 指定路径
gcc/g++编译时用-I 指定路径 gcc/g++ -I[/xx/xx](路径)
方法二:设置环境变量
gcc :C_INCLUDE_PATH
g++:CPLUS_INCLUDE_PATH
方法三:添加到系统默认搜索路径
/usr/include; /usr/local/include
#头文件查找优先级
- gcc/g++编译时用-I 指定路径 gcc/g++ -I[/xx/xx](路径)
- 环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
- 系统默认:/usr/include; /usr/local/include
列出动态库依赖关系指令
ldd [可执行文件]