rpm是linux下较常见的包管理器,除了非常多的官方软件厂商选择使用其作为其产品的安装包管理器外,很多学习爱好者也使用其来安装自己的软件包。
通过rpmbuild来生成rpm包。其具体细节不在赘述。
当需要在ARM板上构建rpm安装包时,往往因为ARM板资源的限制,在其上构建不是一个效率较高的方式。我们自然而然的想到了类似交叉编译的方式。rpmbuild能否实现交叉构建?答案是肯定的。
当我在x86_64系统上期望构建aarch64架构的安装包时,只需指定目标类型即可:
rpmbuild --target=aarch64 --buildroot=/your/rpmbuild/tree/path SPECFILE
在编译时,rpmbuild将会对库文件、可执行文件进行strip。建议通过脚本压缩目标文件后再rpmbuild。
当您在aarch64系统通过rpm命令安装您的安装包时,或许会碰到dependencies相关的报错:
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
error: Failed dependencies:
/bin/sh is needed by xxxxx.rpm
提示您需要/bin/sh。仔细看rpm的输出信息,可以通过alien来安装您的安装包:
alien -i yourrpm.rpm --scripts
当然也可以指定疏略依赖项来安装:
rpm -i --nodeps your.rpm。