针对 musl 进行交叉构建
根据 docs/src/user/basic_setup.md,我们可以使用以下命令构建 musl 二进制文件: `CARGO=cross TARGET=musl just youki-release` 此命令会出现以下错误消息: > 错误: 0: 无法运行容器 1: 在构建自定义镜像时 2: 在构建 dockerfile 时 3: `Docker build --label 'org.cross-rs.for-cross-target=x86_64-unknown-linux-musl' --label 'org.cross-rs.workspace_root=/home/akashi/work/youki' --tag cross-custom-youki:x86_64-unknown-linux-musl-d871d --build-arg 'CROSS_DEB_ARCH=musl-linux-amd64' --build-arg 'CROSS_BASE_IMAGE=ghcr.io/cross-rs/x86_64-unknown-linux-musl:0.2.5' --file cross/Dockerfile.musl --progress=plain /home/akashi/work/youki` 失败,退出状态为 1 原因是 cross/Dockerfile.musl 中未定义 CROSS_CMAKE_SYSTEM_PROCESSOR 变量,因此 "apk add alpine-keys" 失败。根据此文件中的注释,可以假设 CROSS_CMAKE_SYSTEM_PROCESSOR 变量在指定的基础镜像中已定义,并可在此处继承,但实际上并非如此。如果暂时在 Dockerfile 中添加定义,例如 `ENV CROSS_CMAKE_SYSTEM_PROCESSOR=x86_64`,则 cross-build 将成功执行,不会出现任何错误。对于 aarch64 也是如此。我认为应该更新 Dockerfile.musl 以正确设置该变量,而不是 MARCH。我在 cross-building 中是否遗漏了什么呢?
内容来源: youki-dev/youki