在生成的RPM中控制体系结构
问题描述:
我试图构建我的主机系统体系结构(x86_64)的目标体系结构中的所有配方,以便能够在x86_64环境中安装这些RPM。在生成的RPM中控制体系结构
为此,我只需设置MACHINE=genericx86-64
并构建;但是,由此产生的RPM似乎将其架构设置为core2_64
。我想这与运行bitbake时报告的TUNE_FEATURES="m64 core2"
有关(见下文)。
我该如何确保这些RPM最终为x86_64,以便我的主机(RHEL7)接受它们?
Build Configuration:
BB_VERSION = "1.34.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal-4.8"
TARGET_SYS = "x86_64-poky-linux"
MACHINE = "genericx86-64"
DISTRO = "generic-panel"
DISTRO_VERSION = "0.7"
TUNE_FEATURES = "m64 core2"
TARGET_FPU = ""
例
# rpm -i xxx.core2_64.rpm
package xxx.core2_64 is intended for a different architecture
$ uname -a
Linux localhost 3.10.0-693.2.2.el7.x86_64 #1 SMP Sat Sep 9 03:55:24 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
答
的解决方案是修改DEFAULTTUNE
变量,所以我刚添加DEFAULTTUNE_genericx86-64 = "x86-64"
到我local.conf
。
我可以建议不要这样做吗?即使您将RPM转化为rpm接受的内容,RPM也不能保证与RHEL(或您使用Yocto创建的任何其他发行版)兼容或安全。 – jku
@jku感谢你的抬头。是什么让他们不适合使用RHEL?另外,你有任何建议的替代品? – aerkenemesis
嗯,我并不是说它肯定无法工作,但软件包会对操作系统和其他软件包做出假设。无法保证即使Yocto和RHEL使用的软件包名称也匹配(因此您的软件包可能依赖于在RHEL上找不到的软件包,因为名称不同),更不用说软件包的功能了。这是两个不同的操作系统碰巧使用相同的封装格式的问题。 – jku