GCC 静态链接库
获取更多嵌入式、Linux学习资料,获取独家嵌入式Linux学习路线地图,欢迎加群:398294860,观看更专业、更系统地嵌入式视频教程,请关注:wanglitao.taobao.com
我们在编写程序时,会大量使用C标准库中的函数:比如printf、scanf。对于这些经常被使用的通用函数,C标准把它们封装在C标准库中,用户可以直接调用,不需要自己重复写代码了。
当然,我们也可以通过gcc命令,将自己实现的一些函数封装成库,提供给其他开发者使用。
制作静态链接库
假如现在有add.c和sub.c 源文件,分别实现了加法函数add()和减法函数sub():
// add.c
int add(int a, int b)
{
return a + b;
}
// sub.c
int sub(int a, int b)
{
return a - b;
}
现在将它们编译生成一个静态库libmath.a,供其他程序调用:
# gcc -c add.c
# gcc -c sub.c
# ls
add.c add.o sub.c sub.o
# ar rcs libmath.a add.o sub.o
# ls
add.c add.o libmath.a sub.c sub.o
生成的libmath.a就是一个静态库,里面包含了我们实现的add()函数和sub()函数:
# ar t libmath.a
add.o
sub.o
# nm libmath.a
add.o:
0000000000000000 T add
sub.o:
0000000000000000 T sub
使用静态链接库
接下来,我们就可以编写一个main()函数,然后在main函数里调用它们。
# cat main.c
int add(int a, int b);
int sub(int a, int b);
int main(void)
{
add(1, 2);
sub(4, 3);
return 0;
}
在编译mainc源文件时,因为调用了libmath.a库中的add和sub函数,编译时要使用gcc -l指定库的名字,使用-L指定库的路径:
# ls
libmath.a main.c
# gcc main.c -L./ -lmath
# ls
a.out libmath.a main.c
《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客