Linux加载第三方库


动态链接和静态链接区别:
       静态链接是在链接阶段将所有目标文件(静态库文件等)打包到可执行文件。
      动态连接是在链接阶段不会将动态库文件打包到可执行文件,而是在程序运行时被载入。

一、加载动态库

方法一: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 [可执行文件]

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值