从头开始编译GTK-gobject-introspection的编译失败

问题描述

我正在尝试使用自定义的GCC将源程序包中的GTK 3库编译并安装到linux上的单独安装目录中(薄荷18.3)。由于我找不到任何明确的指导,因此我从常识方法开始。 (有什么要阅读的吗?我无法通过Google找到详细的说明。)

首先,我已经编译并安装了GCC(10.2.0,已测试并且可以正常工作),然后我开始安装GTK所需的所有工具和库。 (cmake,ninja,介子,gettext,glib,pixman,cairo,gobject-introspection等)。仔细设置环境变量(CC,CXX,PATH,PKG_CONfig_PATH等)以指向新工具和安装目录。

在花费大量精力整理细节之后,cmake,忍者,介子,gettext,glib,pixman和cairo已成功编译。但是,我无法编译gobject-introspection库。介子成功配置后,它将失败,并显示以下神秘错误消息:

[78/168] Generating gir-glib with a custom command
Failed: gir/GLib-2.0.gir 
/home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/tools/g-ir-scanner --output=gir/GLib-2.0.gir --no-libtool --quiet --reparse-validate --add-include-path /home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/gir --add-include-path /home/username/temp/gtk-install/gtk-3.24.23/source/gobject-introspection-1.66.0/gir --identifier-prefix=G --symbol-prefix=g --symbol-prefix=glib --c-include=glib.h --namespace=GLib --nsversion=2.0 --library=glib-2.0 --library=gobject-2.0 --external-library --pkg=glib-2.0 --cflags-begin -I/home/username/temp/gtk-install/gtk-3.24.23/native/include/glib-2.0 -I/home/username/temp/gtk-install/gtk-3.24.23/native/lib/x86_64-linux-gnu/glib-2.0/include -DGLIB_COMPILATION -D__G_I18N_LIB_H__ -DGETTEXT_PACKAGE=Dummy --cflags-end /home/username/temp/gtk-install/gtk-3.24.23/native/include/glib-2.0/gobject/glib-types.h /home/username/temp/gtk-install/gtk-3.24.23/native/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h /home/username/temp/gtk-install/gtk-3.24.23/native/include/glib-2.0/glib-unix.h 
__Several similar lines removed to keep the spam filter happy__
/home/username/temp/gtk-install/gtk-3.24.23/native/include/glib-2.0/glib/gwin32.h ../../gobject-introspection-1.66.0/gir/glib-2.0.c
/home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/tmp-introspectb7f8nxow/GLib-2.0: symbol lookup error: /home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/tmp-introspectb7f8nxow/GLib-2.0: undefined symbol: g_number_parser_error_quark
Command '['/home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/tmp-introspectb7f8nxow/GLib-2.0','--introspect-dump=/home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/tmp-introspectb7f8nxow/functions.txt,/home/username/temp/gtk-install/gtk-3.24.23/source/native-builddir/gobject-introspection/tmp-introspectb7f8nxow/dump.xml']' returned non-zero exit status 127
ninja: build stopped: subcommand Failed.

显然,此错误消息并非源自C编译器,而是源自gobject-introspection库本身提供的工具。

我还尝试了各种库版本组合:gobject-interspection 1.30.0、1.36.0、1.49.2、1.58.3、1.60.2、1.64.1、1.66.0,glib 2.66。 0、2.58.3、2.56.4、2.50.3、2.46.2等。我尝试过的所有组合都有一些错误消息,类似于上面显示错误消息,但是引用了其他一些未定义的符号。其中一些库版本带有配置脚本而不是介子。这些也会分解,因此我认为问题与介子并不直接相关。

我整个周末都在解决这个问题,并尝试使用google挖掘相关的网页,论坛,stackoverflow等,但没有成功。现在,我感到除了诉诸黑魔法之外,别无其他。在致力于使用此类设备之前,我先向stackoverflow社区成员寻求帮助。

问题:

  1. 现在该怎么办?
  2. 是否有从头开始设置GTK的详细说明? (本机,并且可能从linux交叉编译以使用mingw获胜)?
  3. 如何确定所需的版本 GTK组件的依赖/依赖库? (例如,什么版本 yy的库满足libxx版本a.b.c的依赖关系?)

(我必须强调,我要做需要从头开始安装所有内容,因为我需要保留对编译器/库版本选择的一些控制,这些编译器是根据因此,我不能简单地从系统存储库中安装每个开发库或使用预编译的软件包,而且我还必须安装一些辅助工具,因为要安装的某些工具/库需要更高版本例如,仓库中的cmake 3.5.1可用,但有些库需要3.18。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...