获得100+象这样的错误:错误:未定义参考..长长的清单在编译GTK-3.12.2
./.libs/libgtk-3.so: undefined reference to `g_drive_can_start_degraded'
我提供所有的连接标志像-lglib-2.0 -lfreetype
等我依然得到那些错误有什么帮助?
获得100+象这样的错误:错误:未定义参考..长长的清单在编译GTK-3.12.2
./.libs/libgtk-3.so: undefined reference to `g_drive_can_start_degraded'
我提供所有的连接标志像-lglib-2.0 -lfreetype
等我依然得到那些错误有什么帮助?
第一步通常是谷歌。搜索g_drive_can_start_degraded
以了解它可能位于哪个库/项目中。第一个环节,从GIO返回的GDrive:https://developer.gnome.org/gio/stable/GDrive.html
再往下,它说:glib: gio/gdrive.c
如此看来,这个功能是glib
一部分。让我们来看看这个库:
find /usr/lib* -name "libglib*.so*"
如果不出现任何安打,也尽量平常的地方,如/lib*
或/usr/local/lib*
。
对于我来说,它提供了这份名单:
/usr/lib/cli/glib-sharp-2.0/libglibsharpglue-2.so
/usr/lib/vmware-installer/2.1.0/lib/lib/libglib-2.0.so.0
/usr/lib/vmware-installer/2.1.0/lib/lib/libglib-2.0.so.0/libglib-2.0.so.0
/usr/lib/vmware/lib/libglib-2.0.so.0
/usr/lib/vmware/lib/libglib-2.0.so.0/libglib-2.0.so.0
/usr/lib/vmware/lib/libglibmm-2.4.so.1
/usr/lib/vmware/lib/libglibmm-2.4.so.1/libglibmm-2.4.so.1
/usr/lib/vmware/lib/libglibmm_generate_extra_defs-2.4.so.1
/usr/lib/vmware/lib/libglibmm_generate_extra_defs-2.4.so.1/libglibmm_generate_extra_defs-2.4.so.1
/usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1.3.0
/usr/lib/x86_64-linux-gnu/libglibmm_generate_extra_defs-2.4.so.1.3.0
/usr/lib/x86_64-linux-gnu/libglib-2.0.so
/usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
/usr/lib/x86_64-linux-gnu/libglibmm_generate_extra_defs-2.4.so.1
看起来最有希望的候选人。让我们看看里面是什么:
objdump --dynamic-syms /usr/lib/x86_64-linux-gnu/libglib-2.0.so | grep g_drive_can_start_degraded
它什么都不返回。也许我有glib
(2.x而不是3.x)的错误版本?
但进一步的调查表明,我也有/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
:
> objdump --dynamic-syms /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 | grep g_drive_can_start_de
000000000003f080 g DF .text 0000000000000078 Base g_drive_can_start_degraded
好像你就错过-lgio-2.0
地方。
如果库没有定义的符号,但需要它,输出应该是这样的:
0000000000000000 DF *UND* 0000000000000000 g_setenv
注意地址为0,段*UND*
而不是.text
。
注意:传递给链接器的库的顺序很重要!链接器只会搜索每个库一次。
谢谢先生!!我已经从源代码编译所有库,所以我有正确版本的库,但正如你告诉'-lgio-2.0'我没有包含它,将包括它,并再次尝试。感谢这样的答案,因为它不仅解释了我的错误,还帮助我在将来如何解决这些错误。 –
@nitinkumar:那么请[接受答案](http://stackoverflow.com/help/someone-answers)以及:-) –
先生,我已经解决了所有未定义的参考错误,现在用我的方式,我只是留下两个'/lib/libatk-bridge-2.0.so:未定义的引用'atspi_is_initialized' /lib/libatk-bridge-2.0.so:未定义的引用'atspi_set_main_context' 其他任何东西? –