Linux C语言 学习之 程序库

1. 静态库

1.1 特点:
  • 编译时把静态库中的相关代码复制到可执行文件中

  • 程序中已包含代码,运行的时候不在需要静态库

  • 程序运行时无需加载库,运行速度更快

  • 占用更多的磁盘和内存空间

  • 静态库升级之后,程序需要重新编译链接

1.2 创建:
  • 编写库文件代码,编译为.o目标文件 gcc -c xxx.c

  • ar 命令创建 libxxx.a文件

    • ar -rsv libxxx.a xxx.o

    • 静态库名字以lib开头,以.a后缀

1.3 链接库:
  • gcc -o xxx xxx.c -L. -lxxx

  • -L 表示库的路径 -l表示库的名称

2. 动态库(共享库)

2.1 特点:
  • 程序中不包含库中代码,尺寸小

  • 多个程序可以共享一个库

  • 程序运行时需要加载库

  • 库升级方便,无需重新编译程序

  • 使用更加广泛

2.2 创建:
  • 编写库文件代码,生成与目标位置无关的目标文件

    • gcc -c -fPIC xxx.c xxx.c

  • 生成动态库

    • gcc -shared -o libxxx.so xxx.o xxx.o

2.3 链接库:
  • gcc -o xxx xxx.c -L. -lxxx

    • -L 表示库的路径

    • -l表示库的名称

2.4 错误

执行动态库可执行文件错误

  • /test:error while loading shared libraries:xxx.so,cannot open shared object file:NO such file or directory

  • 含义:表示可执行文件找不到所使用的动态库

        解决:

  • 找到动态库,添加到/usr/lib里

  • 使用 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 目录路径。添加在~/.bashrc文件里面,使用source ~/.bashrc生效。

2.5 shell命令
  • ldd xxx. 查看可执行文件使用的动态库的名称

  • nm xxx 查看文件符合清单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶小破孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值