RPM 规范文件中的 %arm

%arm in RPM spec file

我正在从源压缩包、补丁和 .spec 文件构建 RPM。我这样做是为了添加我的平台特定补丁。

我已阅读给定的 .spec 文件,并注意到其中有以下行:

%ifarch %{arm}

当我看到类似这样的行时,我有时会看到一个定义,例如,如下:

%global shared 0

后来把%shared当成0使用了,但是找不到%arm的定义。我猜它可能是预先定义的,或者在其他地方定义的(系统范围的?)。

.spec 文件中的 %arm 变量是什么意思?如果是预定义的,定义在哪里?

如果您查看 /usr/lib/rpm/macrosarm 被定义为可能的 ARM 体系结构列表。所以那个宏说 "if the target architecture matches any of these, do this..."

%{arm} 只是一个 RPM 宏,就像所有其他 RPM 宏一样。

它扩展为某种实际值,要找到该值,运行命令

rpm --eval %{arm}

在我的系统上扩展到

armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl

这似乎是我的开发环境支持的所有受支持的 arm 架构。