【发布时间】:2016-03-10 11:27:31
【问题描述】:
在 CentOS Linux 版本 7.1.1503 上从源代码安装 gtk+-3.0.5 时出现以下错误。
错误信息:
/usr/bin/ld: queryimmodules.o: 未定义的符号引用 'g_module_close' /usr/bin/ld: 注意:'g_module_close' 在 DSO 中定义 /lib64/libgmodule-2.0.so.0 所以尝试将它添加到链接器命令行 /lib64/libgmodule-2.0.so.0:无法读取符号:无效操作 collect2:错误:ld 返回 1 个退出状态
环境:
[root@localhost gtk+-3.0.5]# cat /etc/*release CentOS Linux 发行版 7.1.1503(核心)
CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux 7.1.1503 版(核心) CentOS Linux 7.1.1503 版 (核心)
[root@localhost gtk+-3.0.5]# uname -a Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP 2015 年 3 月 6 日星期五 11:36:42 UTC x86_64 x86_64 x86_64 GNU/Linux
./configure --prefix=/opt/gtk
GTK+ 3.0.5
GDK 后端:x11 X11 扩展:XKB XI2 XFIXES DAMAGE 打印后端:文件 lpr 动态模块:是 包括 immodules:无 PackageKit 支持:是内省:否 调试:最少文档:无
制作
... CCLD libgtk-3.la CC queryimmodules.o CCLD
gtk-query-immodules-3.0 /usr/bin/ld: queryimmodules.o: 未定义 引用符号 'g_module_close' /usr/bin/ld: 注意: 'g_module_close' 在 DSO /lib64/libgmodule-2.0.so.0 中定义,所以试试 将其添加到链接器命令行 /lib64/libgmodule-2.0.so.0: 可以 未读取符号:无效操作 collect2:错误:ld 返回 1 退出状态 make[4]: * [gtk-query-immodules-3.0] 错误 1 make[4]: 离开目录/root/gtk/gtk+-3.0.5/gtk' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory/root/gtk/gtk+-3.0.5/gtk' make[2]: * [all] Error 2 make[2]: Leaving 目录/root/gtk/gtk+-3.0.5/gtk' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/root/gtk/gtk+-3.0.5' 制作:*** [全部] 错误 2
【问题讨论】:
-
要么您的 GLib 太旧,要么该版本的 GTK+ 生成的 Makefile 忘记将 GLib 链接到 IM 模块。我不确定是哪个。您可以在
libgmodule.so上运行nm以查看它是否具有这些符号,这将确认它是否是前者。话虽如此,您为什么要在几个月前发布的 CentOS 版本上构建如此古老的 GTK+ 版本?包管理器可能带有 3.14 或 3.16,与 3.0.5 相比,它具有许多出色的功能......