静态库(Static Library) 是一种在编译时被链接到程序中的库文件。它包含了预编译的代码和数据,这些内容在程序运行时不需要再次加载。静态库通常以 .a
文件的形式存在。
GCC(GNU Compiler Collection) 是一个广泛使用的编译器集合,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。
.a
为扩展名,包含多个目标文件(.o
)。.o
为扩展名,包含编译后的代码和数据。原因:编译器无法找到指定的静态库文件。
解决方法:
-L
选项指定库文件的路径。-l
选项指定库的名称(去掉 lib
前缀和 .a
后缀)。原因:可能是库文件不兼容或符号未定义。
解决方法:
nm
工具查看库中的符号:nm
工具查看库中的符号:假设我们有一个简单的程序 main.c
:
// main.c
#include <stdio.h>
void hello(); // 声明外部函数
int main() {
hello();
return 0;
}
编译并链接静态库的完整命令如下:
gcc -c example.c -o example.o
ar rcs libexample.a example.o
gcc main.c -L. -lexample -o myprogram
./myprogram
这将输出:
Hello, World!
通过以上步骤,你可以成功创建和使用静态库。
领取专属 10元无门槛券
手把手带您无忧上云