静态库的制作
1,什么是库?
(1)库文件是计算机上的一类文件, 可以简单的把库文件看成―种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类。
(2)库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。
(3)库文件有两种.静态库和动态库(共享库),区别是:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。
(4)库的好处:1.代码保密2.方便部署和分发
静态库的制作
命名规则:
Linux:libxxx.a
lib :前缀(固定)
xxx:库的名字,自己起
.a:后缀(固定)
windows : libxxx.lib
静态库的制作:
gcc 获得.o 文件
将.o 文件打包,使用ar 工具(archive)
ar rcs libxXX.a xxx.o xxx.o
r —将文件插入备存文件中
c -建立备存文件
s 一索引
gcc main.c -o app -I ./include/ -l calc -L ./lib
# -I 指定所需头文件目录
# -l 指定所调用的静态库
# -L 指定静态库位置
总结
1 在生成静态库文件出生成静态库
# 0 文件所在位置详情
root@ubuntu:/home/carey/Linux/lesson3/library# ls
app include lib main.c src
# app为生成的可执行文件 include里面包含head.h lib里面为静态库 src为静态库所需的.c文件
# 1 生成 .o 文件
root@ubuntu:/home/carey/Linux/lesson3/library/src# gcc -c add.c div.c mult.c sub.c -I ../include/
root@ubuntu:/home/carey/Linux/lesson3/library/src# ls
add.c add.o div.c div.o mult.c mult.o sub.c sub.o
# 2 移到lib目录下 然后在main.c所在目录运行 生成appTest文件
root@ubuntu:/home/carey/Linux/lesson3/library/src# mv libcalc.a ../lib/
root@ubuntu:/home/carey/Linux/lesson3/library# gcc main.c -o appTest -I ./include -l calc -L lib
root@ubuntu:/home/carey/Linux/lesson3/library# ls
app appTest include lib main.c src