Linux加载第三方库

  • 一、加载动态库
  • 方法一:ldconfig指令
  • 方法二:LD_LIBRARY_PATH
  • 方法三:编译时指定路径
  • #动态库搜索优先级
  • 二、加载静态库
  • 方法一:设置环境变量 LIBRARY_PATH
  • 方法二:编译时 -L 指定
  • 方法三:添加到系统默认搜索路径
  • 三、头文件添加:设置环境变量
  • 方法一:编译时用-I 指定路径
  • 方法二:设置环境变量
  • 方法三:添加到系统默认搜索路径
  • #头文件查找优先级
  • 列出动态库依赖关系指令



动态链接和静态链接区别:


       静态链接是在链接阶段将所有目标文件(静态库文件等)打包到可执行文件。


      动态连接是在链接阶段不会将动态库文件打包到可执行文件,而是在程序运行时被载入。

一、加载动态库

方法一:ldconfig指令

      由于 /etc/ld.so.conf文件中指定了默认的动态链接库查找路径。

  1. 在/etc/ld.so.conf.d文件夹在创建xxxx.conf,并写入路径
  2. ldconfig

方法二:LD_LIBRARY_PATH

export LD_LIBRARY_PATH=路径:$ LD_LIBRARY_PATH

方法三:编译时指定路径

gcc/g++  -L[/xx/xx](路径) -l[库名字](去掉lib和.so后缀)

#动态库搜索优先级

  1. 编译目标代码时指定的动态库搜索路径;
        (1)在编译时通过gcc 的参数"-Wl,-rpath,“指定。当指定多个动态库搜索路径时,路径之间用冒号”:"分隔。
        (2)用编译选项-L来指定动态链接库所在的目录(供编译器查找用),同时用-l选项指定缩写的动态链接库名。
  2. 环境变量LD_LIBRARY_PATH
  3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径
  4. 默认的动态库搜索路径:/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

#头文件查找优先级

  1. gcc/g++编译时用-I 指定路径 gcc/g++ -I[/xx/xx](路径)
  2. 环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
  3. 系统默认:/usr/include; /usr/local/include

列出动态库依赖关系指令

       ldd [可执行文件]