静态链接库(.a)文件其实就是将多个object文件(.o)文件打包成一份文件。链接过程可以使用.a或者.o文件。测试一下,三个文件 main.c / fun1.c / fun2.c 分别是:
main.c:
#include "stdio.h"
int fun1(int b);
int fun2(int b);
void main()
{
printf("%d,%d\r\n",fun1(12),fun2(12));
}
fun1.c:
int fun1(int b)
{
return b * 2;
}
fun2.c:
int fun2(int b)
{
return b / 2;
}
将每个源文件单独编译成.o文件,最后一起链接:
将 fun1.c 和 fun2.c 编译成.o文件,然后使用ar工具打包成静态链接库文件 fun.a ,最后链接 main.o 和 fun.a:
注意链接顺序,fun.a 需要在 main.o 后面才行,因为gcc在链接静态库时是往后找符号,不往前查找,所以写在前面不会被查找到。