ARM64架构(NVIDIA Xavier Jetson)Docker安装Parity遇阻求助
解决Jetson Xavier上安装Parity时的
exec format error问题 你遇到的standard_init_linux.go:207: exec user process caused "exec format error"本质是镜像/二进制架构不匹配——你的Jetson Xavier是ARM64(aarch64)架构,但你尝试运行的是为x86_64(amd64)编译的程序或镜像,导致系统无法执行。结合你的环境(Ubuntu 18.04 + ARM64 Docker),给你几个针对性的解决思路:
1. 修复Docker构建的基础镜像问题
你当前Dockerfile用的ubuntu:14.04.5对ARM64的支持非常有限,很多官方镜像甚至没有发布该版本的ARM64变体,Docker会默认拉取amd64镜像,自然无法在ARM64机器上执行。
- 修改Dockerfile基础镜像:换成官方支持ARM64的Ubuntu版本,比如和你主机一致的18.04:
注:因为是在ARM64本机构建,不需要交叉编译工具链(比如FROM arm64v8/ubuntu:18.04 # 明确指定ARM64架构的镜像 WORKDIR /build RUN apt-get -y update && apt-get install -y --no-install-recommends curl git make g++ libc6-dev wget file ca-certificates binutils && apt-get clean # 后续步骤保持不变gcc-aarch64-linux-gnu),可以直接去掉这些依赖 - 重新构建:用ARM64原生方式构建,避免跨架构问题:
docker build -t parity-arm64 .
2. 确保Docker本身是ARM64版本
先验证你的Docker架构是否正确:
docker info | grep Architecture
如果输出不是Architecture: aarch64,说明你可能误装了amd64版本的Docker,需要卸载后重新安装ARM64版本:
sudo apt purge docker-ce docker-ce-cli containerd.io curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 脚本会自动适配ARM64架构
3. 解决Snapcraft安装的架构问题
Snapcraft默认可能拉取amd64的Parity包,导致同样的格式错误。你需要明确指定ARM64架构安装:
sudo snap install parity --channel=stable --arch=arm64
如果官方没有提供ARM64的预编译包,建议放弃Snap方式,改用源码或Docker原生构建。
4. 直接从源码构建Parity(最可靠的ARM64方式)
Parity官方支持ARM64架构,直接从源码编译可以彻底避免镜像/包的架构问题:
- 安装编译依赖:
sudo apt update && sudo apt install build-essential git cmake libssl-dev pkg-config clang - 安装Rust(ARM64版本):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env # 加载Rust环境变量 - 克隆并构建Parity:
git clone https://github.com/paritytech/parity-ethereum.git cd parity-ethereum cargo build --release - 构建完成后,二进制文件在
target/release/parity,可以直接运行或添加到系统路径:sudo cp target/release/parity /usr/local/bin/
内容的提问来源于stack exchange,提问作者mattblack
相关产品推荐
相关产品推荐

