【问题标题】:gcc undefined reference between libraries库之间的 gcc 未定义引用
【发布时间】:2013-03-02 15:18:38
【问题描述】:

在链接时,我得到以下信息:

libMain.a(Object.o): In function `Object': 
Object.cpp(44): undefined reference to `Transform::MakeIdentity()'

nm --defined-only libSystem.a肯定看出来

Transform.o:
00000000 T Transform::MakeIdentity()

libSystem.a 和 libMain.a 都已正确输入。链接器命令行选项:

-o "Game.so" -shared -Wl,-z,noexecstack "-lstdc++" "-lsupc++" "-lgnustl_static" "-lgcc" "libSystem.a" "libMain.a" -nostdlib -l" c" -l"m" -l"log" -l"gcc" -Wl,-soname,"libGame" -Wl,--no-undefined

【问题讨论】:

  • @NPE 刚刚编辑了我的问题,提到我已经尝试重新排序库。
  • 您的文件是 .cpp 但您使用的是 gcc 而不是 g++,这会有所不同吗?
  • @AustinMullins 据我所知,gcc 将在 .cpp 文件上调用 g++。
  • @NPE 没关系,解决了它 - 谢谢。当我将它们两次放入我正在使用的 IDE 中时,它会删除第二次提到的同一个库。

标签: gcc linker static-libraries nm


【解决方案1】:

链接静态库的顺序很重要。详细讨论见Why does the order in which libraries are linked sometimes cause errors in GCC?

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 2012-12-12
    • 2018-05-07
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多