为什么 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
使用 liba
和 libb
中的符号,则必须在命令行上 之后 指定这些库:
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
我有 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
使用 liba
和 libb
中的符号,则必须在命令行上 之后 指定这些库:
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