从yocto SDK生成aarch64 RPM包



我在Docker中运行Ubuntu 18:04 x86_64。我已经复制和采购了我用Yocto制作的SDK。

source /sdk/environment-setup-aarch64-poky-linux

我正在编译库

cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .

到目前为止一切都很好,当我检查库架构file myLib.so时,它显示为aarch64

myLib.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=5e01090be56b47a2dd2edd7c44e9861709f3090a, with debug_info, not stripped

现在我想使用cpack -G "RPM"

生成RPM包
-- Toolchain file defaulted to '/sdk/sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake'
CPack: Create package using RPM
CPack: Install projects
CPack: - Run preinstall target for: myLib
CPack: - Install project: myLib
CPack: Create package
-- CPackRPM:Debug: Using CPACK_RPM_ROOTDIR=/myLib/build/_CPack_Packages/Linux/RPM
CPackRPM: Will use GENERATED spec file: /myLib/build/_CPack_Packages/Linux/RPM/SPECS/myLib.spec
CPack: - package: /myLib/build/myLib.rpm generated.

当我用rpm -qi myLib.so检查rpm文件时,结果是

Name        : myLib
Version     : 1.1.1
Release     : 1
Architecture: x86_64
...

为什么RPM文件的架构是x86_64?
为了生成aarch64 RPM文件,我缺少了什么?

变量CPACK_RPM_PACKAGE_ARCHITECTURE默认为uname -m,当前设置为计算机的体系结构。您可以手动设置此变量以覆盖包架构。

CPACK_RPM_PACKAGE_ARCHITECTURE=aarch64 cpack -G "RPM"

最新更新