gcc - 在运行 64 位 linux 的 Armv8 (aarch64) 上编译并运行 32 位二进制文件
问题描述
我正在尝试使用 gcc 编译器在 Cortex-A72 Armv8 上编译和运行 32 位二进制文件,但我无法做到。我遵循了这个先前的线程在 64 位 linux armv8 机器上编译 32 位二进制文件时遇到问题,我也意识到 ARMv8 linux 机器不支持 -m32 标志。
查看https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html我没有发现任何有趣的东西。
根据https://linux.die.net/man/1/arm-linux-gnu-gcc AArch64 gcc 选项是:
-mbig-endian -mlittle-endian -mgeneral-regs-only -mcmodel=tiny -mcmodel=small -mcmodel=large -mstrict-align -momit-leaf-frame-pointer -mno-omit-leaf-frame-pointer -mtls-dialect=desc -mtls-dialect=traditional -march=name -mcpu=name -mtune=name
所以我的问题是:是否可以在 64 位 linux Armv8 机器上编译和运行 32 位二进制文件?是这样,怎么样?
谢谢你。
编辑:这个https://jensd.be/1126/linux/cross-compiling-for-arm-or-aarch64-on-debian-or-ubuntu为我工作
解决方案
您可以从Cortex-A 工具链 Arm 站点下载带有硬浮点 (arm-none-linux-gnueabihf) 工具链的 AArch32 目标。
存档文件名为gcc-arm-10.2-2020.11-aarch64-arm-none-linux-gnueabihf.tar.xz,位于AArch64 Linux 托管的交叉编译器部分。
您可能需要在 Aarch64 系统上安装其他软件包 - 搜索How to run 32-bit (armhf) binaries on 64-bit (arm64)和您的 Linux 发行版名称。
推荐阅读
- java - 在 android studio para mí org.gradle.execution.MultipleBuildFailures 中构建应用程序时出错
- php - 重定向回来后如何在表单中添加标题?
- asp.net-mvc - 在asp.net mvc中使用Rotativa打印页面
- javascript - 如何将javascript函数执行限制在特定窗口?
- java - 为禁用的下拉选项创建定位器并使用 selenium java 进行选择
- c++ - 视频上的体积投影
- laravel - 类时事通讯不存在(mailchimp 时事通讯):laravel
- r - 我需要什么混合模型?
- r - 用 ::psych oder ::semtools 计算麦当劳欧米茄
- groovy - 如何将字符串和变量连接成groovy中的变量