ld:重复符号_dbg_char
在 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”在两个库中,但我不确定如何找到它的来源。
关于如何 id _dbg_char 的技巧、策略、直接答案将不胜感激。
项目正在使用 libtool/autotools 和 gcc 4.01
Getting a linker error on osx (no errors on linux or fbsd for the same code):
ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o
the 2 libs listed in the error are mine but the symbol isn't. c++flint confirms '_dbg_char' is in both libs but I'm not sure how to find where it comes from.
tricks, strategies, outright answers for how to id _dbg_char would be greatly appreciated.
project is using libtool/autotools and gcc 4.01
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
找到一个通过“
dbg_ ## t
”定义 dbg_char 的日志记录/调试宏。 修复方法是使其静态。 经验教训:dbg_
”而不是“_dbg_
”Found a logging / debug macro that was defining dbg_char by '
dbg_ ## t
'. fix was to make it static. lessons learned:dbg_
" instead of "_dbg_
"您可能想要检查两个库
#include
是否都是声明_dbg_char
但缺少extern
关键字的头文件。 也许其他平台上的#ifdef 已经被淘汰了,所以你只会在 OS X 上遇到这个问题。You might want to check if both libs
#include
a header file that declare_dbg_char
but miss theextern
keyword. Maybe that's#ifdef
'ed out for other platforms so you only hit that problem on OS X.