c - 链接静态库时获取 undefined reference

标签 c gcc static-libraries linker-errors undefined-reference

我用 GCC 做了一个静态库。图书馆的 build 还可以。

当我使用它时,链接器会在某些函数上抛出 undefined reference 错误。但是 nm 说函数是在静态库中定义和导出的(用 T 标记)。我知道我需要将库放在需要它们的模块之后的链接顺序,所以这不会成为问题。

静态库是从 3 个 C 文件构建的。 A.c B.c 和 D.c D 模块依赖于 A 和 B(包括它们的 header )。

当我使用 A 和 B 中的函数时没有问题,但是当我尝试使用 D 中的任何函数时,我在它们上出现 undefined reference 错误。

如果我将这些函数移到 A 或 B 中,它就会起作用。但如果它们在 D 模块中则不会。

我完全不知道发生了什么或我被忽略了什么。

我正在使用 Code::Blocks 并处理纯 C 文件。

最佳答案

一个多次奏效的老把戏:在链接阶段列出每个静态库两次。

即,在您的 makefile(或您正在使用的任何文件)中,放置:

gcc -o <outfile> <liba> <libb> <libc> <liba> <libb> <libc>

无论如何,我希望你明白了。

关于c - 链接静态库时获取 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218883/

相关文章:

c++ - 如果同一系统上有多个 GCC,则使用哪个版本的 libstdc++.so

c# - 使用 CLI 或任何其他方式将 C++ 库静态链接到 C# 进程

c - 为客户 C 编程分配点

c++ - 在 apache 2.2 中正确使用 ap_set_content_type()

c++ - libboost 中的 undefined symbol

iphone - 在 Xcode 中创建 Objective-C++ 静态库

c++ - 在 C++ 编译期间混合 x86 和 x64 静态库

c - 我如何限制 GTK 中小部件的大小?

python - 使用管道将命令发送到 python 解释器中

calloc 在 char 数组中返回少 2 个字符