静态库制作

来源:互联网 发布:整站源码带数据下载 编辑:程序博客网 时间:2024/06/06 12:45







静态库

静态库................................................................................................................................. 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.          生成的静态库需要跟对应的头文件同时发布

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


0 0