【问题标题】:ld: duplicate symbol _dbg_charld:重复符号_dbg_char
【发布时间】:2009-07-13 07:47:43
【问题描述】:

在 osx 上得到一个链接器错误(在 linux 或 fbsd 上没有错误对于相同的代码):

ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o

错误中列出的 2 个库是我的,但符号不是。 c++flint 确认 '_dbg_char' 在两个库中,但我不确定如何找到它的来源。

非常感谢有关如何识别 _dbg_char 的技巧、策略和直接答案。

项目正在使用 libtool/autotools 和 gcc 4.01

【问题讨论】:

    标签: c macos libtool


    【解决方案1】:

    找到了一个记录/调试宏,它通过“dbg_ ## t”定义了 dbg_char。修复是使其成为静态的。经验教训:

    1. osx 在符号名称中添加前导 _。直到我在 linux 上运行 nm 并看到没有前导 _ 的相同符号,我才想到在代码库中搜索“dbg_”而不是“_dbg_
    2. osx 抱怨是对的
    3. 具有讽刺意味的是,剪切和粘贴我不完全理解的调试宏给我带来了很多麻烦

    【讨论】:

      【解决方案2】:

      您可能想检查两个库 #include 是否都是声明 _dbg_char 但错过 extern 关键字的头文件。也许那是 #ifdef 被其他平台淘汰了,所以你只能在 OS X 上遇到这个问题。

      【讨论】:

      • 谢谢。我已经用 grep 对整个 fs 运行 find 并且在我的 nor apples *.h 文件中没有找到任何 _dbg_char 。还在挖……
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多