为什么 2 个静态库不能调用彼此的函数

Why 2 static libs can't call to each other's function

我有 2 个静态库:liba.a、libb.a 和一个 link 都有的可执行文件。 liba.a 正在调用 libb.a 中定义的函数 foo 两个库都编译成功但我的 exe 似乎有 linker 错误:

undefined reference to `foo'

需要帮助...

使用 ubuntu 14.04。 gcc 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

构建时间:

g++ liba.a libb.a myCode.o -o myExe

这是错误的,因为the order of the arguments matters。如果 myCode 使用 libalibb 中的符号,则必须在命令行上 之后 指定这些库:

g++ myCode.o liba.a libb.a -o myExe

或者,您可以请求链接器将所有三个都视为 "group";如果这样做,将在该组内为您解决依赖关系,而无需担心顺序:

g++ "-Wl,--start-group" liba.a libb.a myCode.o "-Wl,--end-group" -o myExe