我需要为特定项目升级glib。当前使用的是glib 2.28.8。我有三个问题。
meson
和ninja
,所以我检查了glib的INSTALL.in
,它说先运行meson _build
,然后运行ninja -C _build
。所以我运行了meson _build
并得到了以下输出:$ meson _build
The Meson build system
Version: 0.47.2
Source dir: /srv/devel/build/glib-2.65.0
Build dir: /srv/devel/build/glib-2.65.0/_build
Build type: native build
meson.build:227: WARNING: Identifier 'in' will become a reserved keyword in a future release. Please rename it.
meson.build:227:14: ERROR: Expecting eol got id.
if vs_crt_opt in ['mdd', 'mtd']
因此基本版本无法正常工作。为什么?
PKG_CONFIG_PATH=$(OUTPUT_DIR)/lib/pkgconfig ./configure --prefix=$(OUTPUT_DIR) --disable-dtrace --disable-selinux ac_cv_path_MSGFMT=/bin/true CPPFLAGS="-fPIC -I$(OUTPUT_DIR)/include" LDFLAGS="-L$(OUTPUT_DIR)/lib" --enable-static --disable-shared
如何在介子中指定它?
谢谢!
编辑:我尝试了glib的较早版本,回到2.62.0,运行meson _build
时出现错误meson.build:1:0: ERROR: Meson version is 0.47.2 but project requires >= 0.49.2.
。因此,这可能是问题(1)的很大一部分。它运行在CentOS 6和7上,因此我可能必须获取并安装当前的介子软件包。
答案 0 :(得分:0)
因此基本版本无法正常工作。为什么?
您在修改中正确地发现了这一点:GLib 2.64 requires Meson 0.49.2,而且看来Meson 0.47.2太旧了,无法正确解析GLib的meson.build
。
从您的构建输出中可以看到您正在尝试构建GLib 2.65.0。请注意,2.65是不稳定发行版。即使是GLib的次要版本(2.62.x,2.64.x等)也很稳定。奇怪的是不稳定的。只要您知道要签署的内容,就可以使用不稳定版本:它可能包含错误,并且该不稳定系列中引入的新API可能会在第一个稳定版本(例如2.65)之前更改或删除。 x,对应的第一个稳定版本将是2.66.0)。
出于我们的目的,我们使用以下配置命令:
您将需要以下内容: 介子-前缀“ $(OUTPUT_DIR)” -Dselinux =禁用-Ddefault_library =静态_build
您可以从b_staticpic
option’s default value中看到,-fPIC
是静态库的默认设置,因此(我认为)不需要明确指定。
由于它是disabled by default,因此无需禁用dtrace支持。如果确实需要禁用它,则可以使用-Ddtrace=false
来实现。
使用-L
可以覆盖自定义-I
和--prefix
参数。
不支持使用msgfmt
工具禁用国际化功能来构建GLib,这是一种不受支持的方法,而您只能自己使用它。
我还需要在Windows中构建。那里有陷阱吗?
这个问题太广泛了,无法在StackOverflow上回答。