IO进程Day02_库

一、库

  1. 库:相关功能函数的二进制文件集合。
  2. 库的分类:静态库和动态库。
  • 静态库:编译链接时,将库代码复制一份,链接到生成的可执行文件中。
    • 优点:可移植性好。
    • 缺点:可执行文件较大,占用内存较多
  • 动态库:编译时,不会将库链接到可执行文件中,而是生成动态库标记,在程序运行时,由系统区加载动态库再执行。
    • 优点:占用内存小,更新库方便
    • 缺点:移植性差

(一)库的作用

  1. 方便、复用性强。
  2. 安全、代码保密性搞。

(二)静态库的制作

  1. 库的实现:xxx.c
  2. 库的声明:xxx.h,函数、类型、宏……的声明。

gcc - c mylib.c -o mylib.o

  1. 制作库:

ar crs lib库名.a -o 库的实现目标文件

ar crs libmylib.a -o mylib.o

  1. 静态库的使用:

gcc c程序源文件 -L. -l库名 -o 生成的可执行文件名

gcc main.c -L. -lmylib -lmylib -o main

(三)动态库的制作

  1. 库的实现:xxx.c
  2. 库的声明:xxx.h,函数,类型,宏……的声明
  3. 编译库文件:生成.o目标文件

gcc -fPIC -c mylib.c -o mylib.o

-fPIC:生成与地址无关的可执行代码

  1. 制作动态库:

gcc -shared -o lib库名.so 库的实现的目标文件

  1. 动态库的使用:

    1. 编译:

    gcc main.c -L. -lsort -o main.out

    1. 配置:先配置动态库路径,然后才可以运行。配置系统动态库的搜索路径,在目录/etc/ld.so.conf.d下创建一个配置文件:xxx.conf;并写入一行,动态库路径:pwd mylib命令执行后所得到的路径。
    2. 执行ldconfig,刷新路径。
    3. 执行。

(四)静态库的动态库的差异

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值