在 ARM 上构建(How To Build On ARM)
介绍
本文档包含在 ARM 机器上构建/测试 LLVM 与 Clang 的信息。
本文件不是用于指导在其它架构(例如 x86_64)上交叉编译 LLVM/Clang 到 ARM 的方法。若需交叉编译信息,请参阅《How to cross-compile Clang/LLVM using Clang/LLVM》。
在 ARM 上构建 LLVM/Clang 的注意事项
下面是一些关于在 ARM 上构建/测试 LLVM/Clang 的注意点。请注意 “ARM” 包含大量不同的 CPU;这些建议主要基于 ARMv6 与 ARMv7 架构,可能不适用于更古老的芯片。
-
常见的 Linaro/Ubuntu ARM 系统(比如 Pandaboard)通常是硬浮点(hard-float)平台。使用 CMake 时有若干选项可选。自 3.8 起已不推荐使用 Autoconf。
推荐在Release模式下构建 LLVM/Clang,因为 Release 模式消耗的内存要少得多。否则构建过程很有可能由于内存不足而失败。通常也建议只构建相关的后端(例如 ARM 与 AArch64),因为几乎不会在 ARM 板上用于交叉编译其它架构。如果你要运行 Compiler-RT 的测试,还应包含 x86 后端,否则部分测试会失败。示例 CMake 调用:
cmake $LLVM_SRC_DIR -DCMAKE_BUILD_TYPE=Release \ -DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64"其他可用选项:
- 使用 Ninja 而不是 Make:
-G Ninja - 在构建时启用断言:
-DLLVM_ENABLE_ASSERTIONS=True - 指定本地(非 sudo)安装路径:
-DCMAKE_INSTALL_PREFIX=$HOME/llvm/install - 指定 CPU 标志:
-DCMAKE_C_FLAGS=-mcpu=cortex-a15(CXX_FLAGS 同理)
之后直接运行
make -jN或ninja即可构建全部。运行make -jN check-all或ninja check-all会运行所有编译器测试。关于运行测试套件的更多细节,请参见《LLVM Testing Infrastructure Guide》。 - 使用 Ninja 而不是 Make:
-
如果你在内存为 1 GB 或更少的 ARM 板上构建 LLVM/Clang,请使用 gold 链接器而不是 GNU ld(ld.bfd)。无论如何,建议设置交换分区(swap)。
例如可以使用:$ sudo ln -sf /usr/bin/ld /usr/bin/ld.gold -
ARM 开发板可能比较不稳定,可能会出现核心失效、big.LITTLE 切换时缓存频繁失效等问题。为减轻这些影响,可以把所有 CPU 核心的 Linux 调度器设置为 “performance”。下面的脚本可用于设置(需要安装
cpufrequtils):# The code below requires the package 'cpufrequtils' to be installed. for ((cpu=0; cpu=`grep -c proc /proc/cpuinfo`; cpu++)); do sudo cpufreq-set -c $cpu -g performance done构建完成后记得关闭该设置,否则可能造成 CPU 过热或额外能耗。大多数现代内核不需要此操作,仅在遇到问题时使用。
-
在 SD 卡上运行构建是可行的,但 SD 卡更易出错;相比之下,高质量的 USB 盘更可靠,外接硬盘又更快、更稳定。因此建议至少考虑购买一只快速的 USB 闪存驱动器。在有快速 eMMC 的系统上,使用 eMMC 也是很好的选择。
-
确保你有足够靠谱的电源(几十美元级别),能够至少提供 4 安培电流。这在连接 USB 设备时尤为重要。使用外接供电的 USB/SATA 硬盘比仅靠主板电源更可靠。
原文地址:https://llvm.org/docs/HowToBuildOnARM.html
2153

被折叠的 条评论
为什么被折叠?



