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

时间:2015-01-29 17:18:48

标签: c++ linker linker-errors

我有2个静态库:liba.a,libb.a和链接两者的可执行文件。 liba.a调用函数foo,它在libb.a中定义 两个libs编译成功但我的exe似乎有链接器错误:

undefined reference to `foo'

需要帮助......

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

1 个答案:

答案 0 :(得分:4)

构建时:

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

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

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