我有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)
答案 0 :(得分:4)
构建时:
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
或者,您可以请求链接器将所有三个视为"组&#34 ;;如果您这样做,将在该组内为您解决依赖关系,而无需担心订单:
g++ "-Wl,--start-group" liba.a libb.a myCode.o "-Wl,--end-group" -o myExe