如何在C语言中链接静态库?

41

我使用Code::Blocks编译我的静态库,输出结果是一个libstatic.a文件。现在,我该如何链接到我的库以使用已编译的函数呢?

(我尝试使用#include "libstatic.a",但我的项目无法编译)

5个回答

61
cc -o yourprog yourprog.c -lstatic
或者
cc -o yourprog yourprog.c libstatic.a

我尝试了第二个方法,它有效。谢谢。我也能够配置Code::Blocks使其正常工作。:-) - user188276

11

你应该在代码中使用适当的头文件,即#include "libstatic.h"(这就是为什么你的代码无法编译),并将libstatic.a的路径作为输入库之一包含在链接器选项中。

这个网页有一些关于链接静态库的示例,例如:

gcc -I. -o jvct jvct.c libjvc.a

1
谢谢。最终我在CodeBlocks上完成了它,并且我发现#include .h文件的名称不一定与.a文件相同。 - user188276

9

我必须在我的 makefile 中设置库路径。对于这种情况,您可以使用以下代码:

gcc -o myapp main.c -L. -lstatic

4
gcc -I. -o jvct jvct.c libjvc.a

4

如果要纯静态链接,请使用 -static 参数。

cc -static yourprogram.c libstatic.a

2
请注意,这将导致编译器静态链接到 所有 库,包括 libc,并生成静态链接的二进制文件。这可能是您想要的(或者不是)。 - WGH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接