静态链接库(Static Library) 是一种将多个目标文件(Object Files)打包成一个单独的文件,以便在编译时链接到应用程序中的方式。静态链接库通常具有 .a
扩展名(在Unix-like系统中),包含了预编译的代码和数据,这些内容在编译时会被直接复制到最终的可执行文件中。
.a
结尾,包含了一系列的目标文件。.o
结尾,是编译后的中间文件。原因:编译器没有找到指定的库文件。
解决方法:
-L
选项指定库文件的搜索路径。-l
选项指定库的名称(去掉 lib
前缀和 .a
后缀)。原因:可能是库文件不兼容或未正确编译。
解决方法:
nm
工具检查库文件中的符号。假设我们有两个源文件 add.c
和 subtract.c
,以及一个主程序 main.c
。
add.c
int add(int a, int b) {
return a + b;
}
subtract.c
int subtract(int a, int b) {
return a - b;
}
main.c
#include <stdio.h>
extern int add(int, int);
extern int subtract(int, int);
int main() {
printf("Add: %d\n", add(5, 3));
printf("Subtract: %d\n", subtract(5, 3));
return 0;
}
编译步骤
通过以上步骤,你可以成功创建并使用一个静态链接库。
领取专属 10元无门槛券
手把手带您无忧上云