0

在 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

4

2 回答 2

1

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

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

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

于 2009-07-13T08:30:16.200 回答