
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
使用同一个Docker镜像交叉编译Rust程序,支持Linux(musl libc)和macOS(osxcross)。
https://github.com/joseluisq/rust-linux-darwin-builder/workflows/CI/badge.svg](https://github.com/joseluisq/rust-linux-darwin-builder/actions?query=workflow%3ACI) https://img.shields.io/docker/v/joseluisq/rust-linux-darwin-builder/1](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/) https://img.shields.io/docker/image-size/joseluisq/rust-linux-darwin-builder/1](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/tags) https://img.shields.io/docker/pulls/joseluisq/rust-linux-darwin-builder.svg](https://hub.docker.com/r/joseluisq/rust-linux-darwin-builder/)
这是一个Linux Docker镜像,基于https://hub.docker.com/r/ekidd/rust-musl-builder%E6%9E%84%E5%BB%BA%EF%BC%8C%E4%BD%86%E4%BD%BF%E7%94%A8%E6%9C%80%E6%96%B0%E7%9A%84**Debian https://hub.docker.com/_/debian?tab=tags&page=1&name=11-slim**%EF%BC%88https://www.debian.org/News/2021/20210814%EF%BC%89%E3%80%82
它包含交叉编译https://www.rust-lang.org/%E9%A1%B9%E7%9B%AE%E6%89%80%E9%9C%80%E7%9A%84%E5%BF%85%E8%A6%81%E5%B7%A5%E5%85%B7%EF%BC%8C%E4%BE%8B%E5%A6%82%E9%80%9A%E8%BF%87https://doc.rust-lang.org/edition-guide/rust-2018/platform-and-target-support/musl-support-for-fully-static-binaries.html%E7%94%9F%E6%88%90**Linux%E9%9D%99%E6%80%81%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6**%EF%BC%88%60x86_64-unknown-linux-musl%60%EF%BC%89%EF%BC%8C%E4%BB%A5%E5%8F%8A%E9%80%9A%E8%BF%87https://github.com/tpoechtrager/osxcross%E7%94%9F%E6%88%90**macOS%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6**%EF%BC%88%60x86_64-apple-darwin%60%EF%BC%89%EF%BC%8C%E5%9D%87%E9%80%9A%E8%BF%87%E5%90%8C%E4%B8%80%E4%B8%AALinux%E9%95%9C%E5%83%8F%E5%AE%9E%E7%8E%B0%E3%80%82
该Docker镜像支持https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/%EF%BC%88%60amd64%60%E5%92%8C%60arm64%60%EF%BC%89%EF%BC%8C%E5%8F%AF%E5%9C%A8%E5%8E%9F%E7%94%9F%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8%E3%80%82%E6%AD%A4%E5%A4%96%EF%BC%8C%E8%BF%98%E5%8F%AF%E9%80%9A%E8%BF%87%60x86_64%60 Docker镜像变体交叉编译arm64架构的Linux或Darwin应用。
默认工作目录为/root/src。
以下是Docker镜像中包含的默认工具链。
x86_64-unknown-linux-musl
shdocker run --rm \ --volume "${PWD}/sample":/root/src \ --workdir /root/src \ docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1 \ sh -c "cargo build --release --target x86_64-unknown-linux-musl"
x86_64-unknown-linux-gnu
shdocker run --rm \ --volume "${PWD}/sample":/root/src \ --workdir /root/src \ docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1 \ sh -c "cargo build --release --target x86_64-unknown-linux-gnu"
x86_64-apple-darwin
shdocker run --rm \ --volume "${PWD}/sample":/root/src \ --workdir /root/src \ docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1 \ sh -c "cargo build --release --target x86_64-apple-darwin"
aarch64-unknown-linux-gnu
shdocker run --rm \ --volume "${PWD}/sample":/root/src \ --workdir /root/src \ docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1 \ sh -c "cargo build --release --target aarch64-unknown-linux-gnu"
aarch64-unknown-linux-musl
shdocker run --rm \ --volume "${PWD}/sample":/root/src \ --workdir /root/src \ docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1 \ sh -c "cargo build --release --target aarch64-unknown-linux-musl"
aarch64-apple-darwin
shdocker run --rm \ --volume "${PWD}/sample":/root/src \ --workdir /root/src \ docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1 \ sh -c "cargo build --release --target aarch64-apple-darwin"
已知https://doc.rust-lang.org/cargo/guide/cargo-home.html#cargo-home%E9%BB%98%E8%AE%A4%E6%8C%87%E5%90%91%60$HOME/.cargo%60%EF%BC%88%E6%AD%A4%E5%A4%84%E4%B8%BA%60/root/.cargo%60%EF%BC%89%E3%80%82%E8%8B%A5%E8%A6%81%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89Cargo%E4%B8%BB%E7%9B%AE%E5%BD%95%EF%BC%8C%E9%9C%80%E7%A1%AE%E4%BF%9D%E5%9C%A8%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E5%89%8D%E5%B0%86Cargo config文件复制到目标目录,例如执行cp "$HOME/.cargo/config" "$CARGO_HOME/"。否则,可能会遇到链接错误(例如交叉编译至x86_64-apple-darwin目标时)。
也可将该镜像用作Dockerfile的基础镜像:
DockerfileFROM docker.xuanyuan.run/joseluisq/rust-linux-darwin-builder:1.68.1
还可将o32-clang(++)和o64-clang(++)用作常规编译器。
注意:
示例:
sh使用示例: 示例1:CC=o32-clang ./configure --host=i386-apple-darwin21.4 示例2:CC=i386-apple-darwin21.4-clang ./configure --host=i386-apple-darwin21.4 示例3:o64-clang -Wall test.c -o test 示例4:x86_64-apple-darwin21.4-strip -x test !!! 使用Automake时,需用aarch64-apple-darwin21.4-*替代arm64-* !!! !!! CC=aarch64-apple-darwin21.4-clang ./configure --host=aarch64-apple-darwin21.4 !!! !!! CC="aarch64-apple-darwin21.4-clang -arch arm64e" ./configure --host=aarch64-apple-darwin21.4 !!!
以下是使用Makefile交叉编译Rust应用的简单示例。
注意:
/root/src。创建Makefile:
shcompile: @docker run --rm -it \ -v $(PWD):/drone/src \ -w /drone/src \ joseluisq/rust-linux-darwin-builder:1.68.1 \ make cross-compile .PHONY: compile cross-compile: @echo @echo "1. 交叉编译示例..." @rustc -vV @echo @echo "2. 编译应用(linux-musl x86_64)..." @cargo build --manifest-path=tests/hello-world/Cargo.toml --release --target x86_64-unknown-linux-musl @du -sh tests/hello-world/target/x86_64-unknown-linux-musl/release/helloworld @echo @echo "3. 编译应用(apple-darwin x86_64)..." @cargo build --manifest-path=tests/hello-world/Cargo.toml --release --target x86_64-apple-darwin @du -sh tests/hello-world/target/x86_64-apple-darwin/release/helloworld .PHONY: cross-compile
运行makefile的compile目标,将生成两个发布版本二进制文件:x86_64-unknown-linux-musl和x86_64-apple-darwin。
shmake compile # 1. 交叉编译示例... # rustc 1.68.1 (8460ca823 2023-03-20) # binary: rustc # commit-hash: 8460ca823e8367a30dda430efda790588b8c84d3 # commit-date: 2023-03-20 # host: aarch64-apple-darwin # release: 1.68.1 # LLVM version: 15.0.6 # 2. 编译应用(linux-musl x86_64)... # Finished release [optimized] target(s) in 0.01s # 1.2M tests/hello-world/target/x86_64-unknown-linux-musl/release/helloworld # 3. 编译应用(apple-darwin x86_64)... # Finished release [optimized] target(s) in 0.01s # 240K tests/hello-world/target/x86_64-apple-darwin/release/helloworld
更多详情可参考James Waples的文章《从Linux交叉编译Rust至macOS》。
详见https://github.com/joseluisq/rust-linux-darwin-builder/issues/7
若某些crate需要C绑定且编译或链接出错,尝试使用Clang进行C/C++构建。
例如交叉编译至macOS:
shCC=o64-clang \ CXX=o64-clang++ \ cargo build --target x86_64-apple-darwin
本项目
v1.42.0及之前版本使用旧版OpenSSLv1.0.2。
自v1.43.x及更高版本起,使用OpenSSLv1.1.1(LTS),支持至2023-09-11。
详见https://www.openssl.org/policies/releasestrat.html%E3%80%82
除非您明确声明,否则您有意提交的任何贡献(定义于Apache-2.0许可中)将按以下双重许可分发,无额外条款或条件。
欢迎提交https://github.com/joseluisq/rust-linux-darwin-builder/pulls%E6%88%96%E6%8F%90%E4%BA%A4https://github.com/joseluisq/rust-linux-darwin-builder/issues%E3%80%82
本作品主要根据MIT许可和Apache许可(版本2.0)的条款分发。
© 2019-present https://github.com/joseluisq
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务