Vala:为较低的 GTK 版本编译
Vala: Compile for a lower GTK version
我的电脑是 运行ning Ubuntu 17.10 并且有 GTK+ 3.22。
从该环境编译时,二进制文件不能在 Ubuntu 16.04 下 运行,因为只有 GTK+ 3.18 与 Ubuntu 16.04 兼容。如何为较低的 GTK 运行 时间级别编译?
倒过来也应该可行。
在较旧的 OS 版本上编译二进制文件,它应该可以在较新的版本上正常工作。
通常的解决方案是根本不提供二进制文件,而是让用户和发行版开发人员/打包人员处理问题。
只需确保您的应用易于编译,这意味着使用 mesonbuild
等标准构建系统工具并在 README.md 文件中添加一些构建指令。
这取决于您对 GTK+ 的真正依赖性 API。
每个函数在其文档末尾都有一个 Since:
字段,说明它首次出现在哪个版本的 GTK+ 上。您的两个目标版本都是 GTK+ 3,因此它们是 ABI-compatible。因此,当您 运行 在 3.18 上为 3.22 编译的二进制文件时,您只需要检查未找到哪些符号。 3.18 之后添加了所有未找到的符号。每个 Since:
> 3.18 的符号都不能使用,您需要使用最小公分母。一旦识别出大于 3.18 的符号,您有 2 个选择:
- 要么按照 3.18 的方式进行操作,要么将代码更改为不使用 3.18 之后引入的符号。这意味着您可能必须使用已弃用的符号,但它们将一直存在到下一个 API 中断(即 GTK+ 4)。
- 或尝试从两个版本中获取最新功能,使用类似:
.
#if GTK_CHECK_VERSION(3, 20, 0)
// Do it the GTK+ >= 3.20 way
#else
// Do it the GTK 3.18 way
// (and ensure you have checks in your configure.ac or similar to make
// sure configuration breaks if trying to build with a GTK+ < 3.18)
#endif
我的电脑是 运行ning Ubuntu 17.10 并且有 GTK+ 3.22。
从该环境编译时,二进制文件不能在 Ubuntu 16.04 下 运行,因为只有 GTK+ 3.18 与 Ubuntu 16.04 兼容。如何为较低的 GTK 运行 时间级别编译?
倒过来也应该可行。
在较旧的 OS 版本上编译二进制文件,它应该可以在较新的版本上正常工作。
通常的解决方案是根本不提供二进制文件,而是让用户和发行版开发人员/打包人员处理问题。
只需确保您的应用易于编译,这意味着使用 mesonbuild
等标准构建系统工具并在 README.md 文件中添加一些构建指令。
这取决于您对 GTK+ 的真正依赖性 API。
每个函数在其文档末尾都有一个 Since:
字段,说明它首次出现在哪个版本的 GTK+ 上。您的两个目标版本都是 GTK+ 3,因此它们是 ABI-compatible。因此,当您 运行 在 3.18 上为 3.22 编译的二进制文件时,您只需要检查未找到哪些符号。 3.18 之后添加了所有未找到的符号。每个 Since:
> 3.18 的符号都不能使用,您需要使用最小公分母。一旦识别出大于 3.18 的符号,您有 2 个选择:
- 要么按照 3.18 的方式进行操作,要么将代码更改为不使用 3.18 之后引入的符号。这意味着您可能必须使用已弃用的符号,但它们将一直存在到下一个 API 中断(即 GTK+ 4)。
- 或尝试从两个版本中获取最新功能,使用类似:
.
#if GTK_CHECK_VERSION(3, 20, 0)
// Do it the GTK+ >= 3.20 way
#else
// Do it the GTK 3.18 way
// (and ensure you have checks in your configure.ac or similar to make
// sure configuration breaks if trying to build with a GTK+ < 3.18)
#endif