Ruby扩展链接错误
每当我尝试链接我的Ruby扩展时,我都会收到这个相当模糊的链接错误:
/usr/bin/ld: Mg.o: relocation R_X86_64_PC32 against undefined symbol `init_window_class_under' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
我在这上面找不到任何东西。我试验了一段时间,当我删除头文件时它链接得很好,所以我继续没有它们(是的,非常糟糕的主意)。
结果我现在需要它们。那么,这个错误到底是什么,我该如何消除它?
更新:清除所有内容后,我开始收到这些警告:
warning: ‘init_window_class_under’ used but never defined
warning: ‘init_display_mode_class_under’ used but never defined
当我第一次遇到问题时,这些也出现了。我不确定他们的意思。
没有找到相关结果
已邀请:
2 个回复
枫湃揩乾纲
和
,但它们未定义。这些函数实际上是在
中定义的,但它们在源文件和头文件中都被声明为
。从
中的函数中删除
连接修饰符,并在
中将它们声明为
。看起来你在
和
子目录中的所有内容都犯了同样的错误。 声明为
的任何内容都有文件范围,在文件本身之外是不可见的。 你原来的错误:
因为
(特别是
)中的所有函数都是
而且
函数不会导致链接器找到任何符号。只有具有外部链接的实体才会在目标文件中生成符号。
漂截嘘
构建目标文件才能链接到x86-64上的共享库(在其他平台上也是个好主意)。 将
添加到
并重建所有对象。