21 使用 x32 psABI
x32 处理器专用应用程序二进制接口( x32 psABI )是 面向 Intel 64(x86-64)架构的原生 32 位处理器专用 ABI。ABI 定义运行环境 中函数之间的调用约定,规定使用哪些寄存器,以及各种 C 数据类型的大小。
某些运行环境即使在 Intel 64 位平台上也更倾向于使用 32 位应用程序。 例如,i386 psABI 是 Intel 64 位平台上一种很老的 32 位 ABI,无法高效访问 和利用 Intel 64 位处理器的资源,导致系统资源未被充分利用。相比之下, x86_64 psABI 较新,数据大小和程序指针使用 64 位。额外的位数增大了程序和 库的体积,也提高了内存和文件系统空间需求。在 x32 psABI 下执行时,用户程序 能更有效地利用 CPU 和系统资源,同时保持较低的应用程序内存占用。额外的位数 用于寄存器,但不用于寻址机制。
Yocto Project 对 x32 psABI 最终规范的支持如下:
可以为 x86_64 架构目标创建 x32 psABI 格式的软件包和镜像。
可以使用 x32 工具链成功构建配方。
可以创建并启动
core-image-minimal和core-image-sato镜像。RPM 软件包管理器支持 x32 二进制文件。
支持大型镜像。
要使用 x32 psABI,需要按以下方式编辑 build/conf/local.conf 配置文件:
MACHINE = "qemux86-64"
DEFAULTTUNE = "x86-64-x32"
baselib = "${@d.getVar('BASE_LIB:tune-' + (d.getVar('DEFAULTTUNE') \
or 'INVALID')) or 'lib'}"
设置好配置文件后,使用 BitBake 构建支持 x32 psABI 的镜像。例如:
$ bitbake core-image-sato