IO进程Day02_库

本文详细介绍了静态库和动态库的概念、优缺点,以及它们在程序开发中的作用。静态库在编译时将代码复制到可执行文件中,提供良好的移植性但增加文件大小;动态库在运行时加载,节省内存但移植性较差。制作静态库使用`ar`命令,动态库则需`gcc -shared`。使用时,静态库通过`-l`和`-L`选项,动态库还需配置系统动态库路径。
摘要由CSDN通过智能技术生成

一、库

  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. 执行。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值