静态库制作







静态库

静态库................................................................................................................................. 1

1.      命名格式...................................................................................................................... 2

1.1.      lib开头................................................................................................................. 2

1.2.      静态库名.............................................................................................................. 2

1.3.      .a结尾.................................................................................................................. 2

2.      描述.............................................................................................................................. 2

2.1.      优点...................................................................................................................... 2

2.1.1.       寻址方便,速度快....................................................................................... 2

2.1.2.       库被打包到可执行程序中,直接发布可执行程序即可使用................... 2

2.2.      缺点...................................................................................................................... 2

2.2.1.       静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。 2

2.2.2.       如果静态函数库改变了,那么你的程序必须重新编译。....................... 2

2.3.      使用场合.............................................................................................................. 2

2.3.1.       在核心程序上使用,保证速度,可忽视空间........................................... 2

2.3.2.       主流应用于80、90年代,现在很少用..................................................... 2

3.       制作............................................................................................................................. 2

3.1.      得到 *.o............................................................................................................... 2

3.1.1.       gcc a.c b.c c.c -c............................................................................................ 2

3.2.      得到静态库 libmytest.a...................................................................................... 2

3.2.1.       ar rcs libmytest.a a.o b.o c.o  (就是一个打包.o文件的过程)............. 3

3.2.2.       查看库中的符号(函数、全局变量等): nmlibmytest.a..................... 3

3.3.      使用静态库.......................................................................................................... 3

3.3.1.       gcc + 源文件 + -L 静态库路径 + -l静态库名 + -I头文件目录 + -o 可执行文件名 gcc main.c -L./-lmytest -I./ -o app....................................................................................................... 3

3.3.2.       gcc + 源文件 + -I头文件 + libxxx.a........................................................... 3

3.3.3.       生成的静态库需要跟对应的头文件同时发布........................................... 3


1.      命名格式

1.1.         lib开头

1.2.         静态库名

1.3.         .a结尾

2.      描述

2.1.         优点

2.1.1.          寻址方便,速度快

2.1.2.          库被打包到可执行程序中,直接发布可执行程序即可使用

2.2.         缺点

2.2.1.          静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。

2.2.2.          如果静态函数库改变了,那么你的程序必须重新编译。

2.3.         使用场合

2.3.1.          在核心程序上使用,保证速度,可忽视空间

2.3.2.          主流应用于80、90年代,现在很少用

3.      制作

3.1.         得到 *.o

3.1.1.          gcc a.c b.c c.c -c

3.2.         得到静态库libmytest.a

3.2.1.          ar rcs libmytest.a a.o b.o c.o
(就是一个打包.o文件的过程)

ar 工具不包含在gcc中
r --> 将文件插入静态库中
c --> 创建静态库,不管库是否存在
s --> 写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。

3.2.2.          查看库中的符号(函数、全局变量等): nm libmytest.a

3.3.         使用静态库

3.3.1.          gcc + 源文件 + -L 静态库路径 + -l静态库名 + -I头文件目录 + -o 可执行文件名
gcc main.c -L./ -lmytest -I./ -o app

-L --> 指定库所在的路径
-l --> 指定库的名字
去掉前缀 lib
去掉后缀 .a
只留下中间部分
-I --> 头文件目录位置

3.3.2.          gcc + 源文件 + -I头文件 + libxxx.a

3.3.3.          生成的静态库需要跟对应的头文件同时发布

头文件中存放的是函数接口(函数声明)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值