gpt4 book ai didi

c - 尝试使用我自己的静态 C 库进行编译

转载 作者:太空狗 更新时间:2023-10-29 16:05:45 24 4
gpt4 key购买 nike

我编译了一个静态库。我有两个文件。

  • mylib_1.c 里面有函数 foo1
  • mylib_2.c 包含函数 foo2

两者都是#include "mylib.h"

我像这样编译了一个库:

gcc -c mylib_1.c -o mylib_1.o
gcc -c mylib_2.c -o mylib_2.o
ar cr mylib.a mylib_1.o mylib_2.o

然后我尝试用我的库编译mylib_test.c

#include "mylib.h"

int main(void)
{
foo1("do something cool");
foo2("do something cool");

return 0;
}

如果我像 gcc mylib_test.c mylib.a 那样编译,GCC 会成功并且一切正常。

如果我像 gcc mylib_test.c -Lmylib.a 那样编译,GCC 会失败:

C:\path\to\mylib_test.c:x: undefined reference to foo1
C:\path\to\mylib_test.c:x: undefined reference to foo2

为什么 GCC 会失败?

如果有所不同,我在 Windows 7.1 上运行最新版本的 MinGW。

最佳答案

对于 gcc,您可能需要 -l 标志而不是 -L 标志。 -L 添加库路径,而 -l 链接到库。

此外,如果您正在为 Linux 创建该静态库,其名称应以 lib 开头(但是是 does not have to,感谢@davmac 的提及)。所以你的库的文件名应该是 libmyLib.a,然后你应该用 -lmyLib 链接它。 (是的,我也觉得这很尴尬。)。

我不了解 Windows,但我猜 Windows 静态库的等价物就是 myLib.lib。如果您正在制作 Windows 库,请先验证此声明。

查看更多here .

关于c - 尝试使用我自己的静态 C 库进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com