静态库和动态库的笔记

库是一个二进制文件,其所包含的代码可以被程序调用。

Linux下有两种库,分别为静态库动态库

1 静态库

1.1 特点

1. 编译时会将静态库的代码直接编译到可执行文件中,所以程序运行时无需加载库,使得运行速度略快

2. 会占用更多的内存空间,同时静态库升级时整个程序都需要重新编译

1.2 创建静态库

1. 编写源代码

2. 生成相对应的.o文件

gcc -c text.c -o text.o

3. 创建命名

ar crs libtext.a text.o
ar库文件维护程序的名称
c创建一个库(无论库是否存在)
r在库中插入模板
s创建目标文件索引(在创建较大的库中可以加快时间)

4. 链接静态库

gcc main.c -o main -L. -ltext

其中 -L 表示当前路径

5. 运行

./可执行文件

2. 动态库(共享库)

2.1 特点

1. 编译时仅记录使用那个动态库,仅在运行时加载共享库,所以程序不包括代码所占内存小

2. 库的升级方便,无需将程序整体编译

3. 使用广泛

2.2 创建动态库

1. 编写源代码

2. 将源代码生成相应的.o文件

gcc -c -fPIC text.c -o text.o

-fPIC :生成与位置无关的代码,可以在任何位置运行

3. 创建动态库

命名规范: lib 库名.so.版本号      //版本号数字

4. 指定生成动态连接 -shared

gcc -shared -o libtext.so.1 text.o

5. 给共享创建软连接(使得编译器在编译的时候可以找到共享库)

ln -s /home/linux/IO/libtext.so.1 text.o

6. 编译

gcc main.c -o main -L. -ltext

7. 运行

./可执行文件

8. 将动态库拷贝到系统路径下

sudo cp libtext.so /usr/lib

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

葭望十八

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

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

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

打赏作者

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

抵扣说明:

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

余额充值