ARM (Linux)

Julia 完全支持 ARMv8 (AArch64) 处理器,并且在某些条件下支持 ARMv7 和 ARMv6 (AArch32)。此文件提供了编译的一般指南,以及针对特定设备的说明。

一个 known issues 的 ARM 列表可用。如果您遇到困难,请创建一个问题,包括 cat /proc/cpuinfo 的输出。

32-bit (ARMv6, ARMv7)

Julia 已成功在以下 ARMv6 和 ARMv7 设备的多个变体上编译:

  • ARMv7 / Cortex A15 三星 Chromebook 在 Crouton 下运行 Ubuntu Linux;
  • Raspberry Pi
  • Odroid

Julia 至少需要 armv6vfpv2 指令集。推荐使用 armv7-a。不支持 armv5 或软浮点。

Raspberry Pi 1 / Raspberry Pi Zero

如果在 Raspberry Pi 中使用的 ARM CPU 类型未被 LLVM 检测到,则通过将以下内容添加到 Make.user 中显式设置 CPU 目标:

JULIA_CPU_TARGET=arm1176jzf-s

要完成构建,您可能需要增加交换文件的大小。为此,请编辑 /etc/dphys-swapfile,更改以下行:

CONF_SWAPSIZE=100

请提供您想要翻译的Markdown内容或文本。

CONF_SWAPSIZE=512

在重新启动交换文件服务之前:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Raspberry Pi 2

Raspberry Pi 2中使用的ARM CPU类型未被LLVM检测到。通过将以下内容添加到Make.user中显式设置CPU目标:

JULIA_CPU_TARGET=cortex-a7

根据具体的编译器和发行版,可能会由于不支持的内联汇编而导致构建失败。在这种情况下,请将 MCPU=armv7-a 添加到 Make.user

AArch64 (ARMv8)

朱莉亚预计将在ARMv8 CPU上工作和构建。应该遵循一般的 build instructions。朱莉亚预计需要大约8GB的RAM或启用交换空间来构建自身。

Known issues

从 Julia v1.10 开始,JITLink 在此架构上对于所有操作系统在链接到 LLVM 15 或更高版本时会自动启用。由于 bug in LLVM memory manager,非平凡的工作负载可能会生成过多的内存映射,在 Linux 上可能会超过文件 /proc/sys/vm/max_map_count 中设置的内存映射限制(mmap),导致出现类似的错误。

JIT session error: Cannot allocate memory

如果发生这种情况,请向您的系统管理员请求增加内存映射的限制,例如使用命令

sysctl -w vm.max_map_count=262144