针对较新版本的 glib 进行编译?

针对较新版本的 glib 进行编译?

我正在开发一款软件,需要针对非常现代的 glib 版本进行编译,但也需要在 Ubuntu 11.10(该版本不附带)上运行。我的第一个想法是向后移植并替换 glib,因为这些版本理论上是兼容的,但它会导致一些问题(最明显的是 Unity 无法正常工作)。

我知道明显的解决方案是使用 Ubuntu 12.04,但我现在没有这个选项(尽管正在努力)。

有什么明智的方法来处理这个问题吗?现在我正在考虑编译 glib,tar编译它,然后手动设置C_INCLUDE_PATHLD_LIBRARY_PATH。不幸的是,我认为我什至无法打包已编译的库,因为 glib 对于其版本不是很具体(它只是glib-2.0.so)。

在这种情况下,该tar方法是我能采取的最佳方法吗?

答案1

我建议在/usr/local/lib或下安装新版本的 glib /usr/local/lib64,然后使用LD_LIBRARY_PATH环境变量,就像上面提到的那样。

事实上,这似乎是默认位置。从./configure --helpglib-2.33.8的输出来看:

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

这个 Ubuntu 论坛主题更多细节。

答案2

我也遇到了类似的问题,我需要编译调制解调器管理器,它需要在操作系统上安装新版本的 GLib-2,而该版本GLib-2无法通过包管理器 ( Ubuntu 18.04) 获得。我也不想破坏窗口管理器(我认为它对glib-2)有一些依赖性。

使用对我有用的最新版本的 GLib-2 进行编译的步骤:

  1. 从源代码编译glib(2022 年 6 月 2 日,托管在这里:https://gitlab.gnome.org/GNOME/glib/)。最新版本使用构建系统(因此如果没有,则meson需要先安装),编译如下:meson
meson build
cd build
meson compile
  1. 使用 meson 将 glib 安装到某个本地文件夹(与默认位置不同,因为它将覆盖现有的 GLib-2 文件):
meson install --destdir /local/path/to/where/you/want/GLib-2/to/be/installed

/local/path/to/where/you/want/GLib-2/to/be/installed我将按如下方式使用${install_dir},但在命令中您需要将 替换${install_dir}为您的路径。

  1. 修改*.pcGLib-2自定义安装的PACKAGE_CONFIG文件,目录${install_dir}/usr/local/lib/x86_64-linux-gnu/pkgconfig
gio-2.0.pc
gio-unix-2.0.pc
glib-2.0.pc
gmodule-2.0.pc
gmodule-export-2.0.pc
gmodule-no-export-2.0.pc
gobject-2.0.pc
gthread-2.0.pc

每个文件都以前缀开头:

prefix=/usr/local

其中需要替换为本地安装的前缀:

prefix=${install_dir}/usr/local

最后,调用ModemManager的配置步骤如下:

PGK_CONFIG=${install_dir}/usr/local/lib/x86_64-linux-gnu/pkgconfig meson build

这样我就能够编译调制解调器管理器使用比操作系统提供的更新版本的 GLib-2。

相关内容