我们不可能每次写代码都需要从头到尾的自己写,正相反,现代程序中往往充斥着大量库文件,并使用include
关键字引用及使用它们
静态库
命令格式
在Linux下,静态库的文件名以lib开头,加上静态库名后以.a结尾.例如(libsort.a)
描述
优点:
- 寻址方便,速度快
- 库被打包到可执行程序中,直接发布可执行程序即可使用
缺点:
- 静态库的代码在编译时已经被载入可执行程序中,因此体积较大
- 如果静态函数库改变了,那么程序必须重新编译
使用场合:
- 在核心程序上使用,保证速度,可忽视空间
- 主流应用于80,90年代,现在很少用
制作
以如下文件举例:
1 | ├── hello.c |
1.生成对应的.o文件
1 | $ cd src |
2.将所有生成的.o文件打包
1 | $ ar rcs libcalc.a *.o |
3.发布静态库
1 | $ mv libcalc.a ../lib |
接下来我们就可以使用静态库了.在源文件中引用头文件,并在编译时同时添加该库文件即可:
1 | $ gcc hello.c lib/libcalc.a -o hello -I include |
还有一个更为正规的写法是使用-L参数指定库文件目录,-l参数指定库文件名称:
1 | $ gcc hello.c -o hello -I include -L lib -l calc |
执行hello:
1 | $ ./hello |