AnyMath 文档

RISC-V(Linux)

Julia对运行Linux的64位RISC-V(RV64)处理器提供了实验性支持。 除了特定设备的说明外,此文件还提供了编译的一般指南。

编译朱莉娅

目前,Julia需要完全从源代码编译,即包括其所有依赖项。 这可以通过以下方式实现 做吧。用户:

USE_BINARYBUILDER := 0

此外,还需要指示要构建的架构以及可选的CPU。 这可以通过设置 三月MCPU 变量在 做吧。用户

三月 变量需要设置为RISC-V ISA字符串,可以通过查看设备的文档或检查来找到 /proc/cpuinfo. 只使用编译器支持的标志,例如运行 gcc-三月=帮助 查看支持的标志列表。 一个共同的值是 rv64gc,这是一个很好的起点。

MCPU 变量是可选的,并且可用于针对特定CPU进一步优化生成的代码。 如果您不确定,建议不要设置它。 您可以通过运行以下命令找到支持的值列表 gcc-目标-帮助.

例如,如果您使用的是StarFive VisionFive2,其中包含基于Sifive U74的JH7110处理器,则可以按如下方式设置这些标志:

MARCH := rv64gc_zba_zbb
MCPU := sifive-u74

如果您更喜欢便携式构建,您可以使用:

MARCH := rv64gc

# also set JULIA_CPU_TARGET to the expanded form of rv64gc
# (it normally copies the value of MCPU, which we don't set)
JULIA_CPU_TARGET := generic-rv64,i,m,a,f,d,zicsr,zifencei,c

交叉编译

RISC-V设备上的本机构建可能需要很长时间,因此也可以在更快的机器上交叉编译Julia。

首先,掌握一个RISC-V交叉编译工具链,它提供了对C、C的支持++ 还有Fortran。 这可以通过签出https://github.com/riscv-collab/riscv-gnu-toolchain[riscv-gnu-toolchain]存储库并构建如下:

sudo mkdir /opt/riscv && sudo chown $USER /opt/riscv
./configure --prefix=/opt/riscv --with-languages=c,c++,fortran
make linux -j$(nproc)

然后,安装用于RISC-V的QEMU用户模式仿真器,以及 宾夫姆特 支持在主机上启用RISC-V二进制文件的执行。 确切的步骤取决于您的发行版,例如,在Arch Linux上,它涉及安装 qemu-用户-静态qemu-用户-静态-binfmt 包裹。 请注意,要实际执行RISC-V二进制文件,QEMU需要能够找到RISC-V系统根,这可以通过设置 QEMU_LD_PREFIX 根文件系统路径的环境变量。

最后,使用以下内容编译Julia 做吧。用户 变量(除了上一节中的变量):

XC_HOST=riscv64-unknown-linux-gnu
OS=Linux
export QEMU_LD_PREFIX=/opt/riscv/sysroot

请注意,您将不得不执行 使路径 设置为包含交叉编译工具链,例如,通过运行:

PATH=/opt/riscv/bin:$PATH make -j$(nproc)

由于我们使用的RISC-V sysroot非常贫瘠,您可能需要添加Julia构建系统当前期望在系统范围内可用的其他库。 例如,构建当前依赖于系统提供的 利布兹,因此您可能需要将此库从Julia构建复制到系统根目录中:

make -C deps install-zlib
cp -v usr/lib/libz.*   /opt/riscv/sysroot/usr/lib
cp -v usr/include/z*.h /opt/riscv/sysroot/usr/include