Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dockerfile中编译Rust程序时,为什么要重置目标环境变量?_Docker_Rust - Fatal编程技术网

在Dockerfile中编译Rust程序时,为什么要重置目标环境变量?

在Dockerfile中编译Rust程序时,为什么要重置目标环境变量?,docker,rust,Docker,Rust,我正试图在ARM6架构上用Docker为raspberry pi交叉编译一个Rust二进制文件。我在构建之前为Cargo指定了环境参数,但是在一个特定的库中它出错了,说找不到“-m64”参数 发生错误时的环境参数与我在Dockerfile中设置的不同;为什么要重置它们 来自ubuntu的最新版本 运行apt-get-update&&\ 安装\ --对\ 比努蒂尔斯\ 建立必要的\ 卷曲\ 吉特\ wget\ 利布德夫开发公司\ 拉链 ARG RASPBERRY_PI_TOOLS_COMMIT_I

我正试图在ARM6架构上用Docker为raspberry pi交叉编译一个Rust二进制文件。我在构建之前为Cargo指定了环境参数,但是在一个特定的库中它出错了,说找不到“-m64”参数

发生错误时的环境参数与我在Dockerfile中设置的不同;为什么要重置它们

来自ubuntu的
最新版本
运行apt-get-update&&\
安装\
--对\
比努蒂尔斯\
建立必要的\
卷曲\
吉特\
wget\
利布德夫开发公司\
拉链
ARG RASPBERRY_PI_TOOLS_COMMIT_ID=5CAA7046982F053CF5380F94DA04B31129ED521
ENV CC=arm-linux-gnueabihf-gcc
ENV TARGET=arm未知linux gnueabihf
环境货物\u CFG\u目标\u拱=臂
环境货物\u CFG\u目标\u ENDIAN=很少
环境货物\u CFG\u目标\u环境=gnu
ENV CARGO\u CFG\u TARGET\u FAMILY=unix
ENV CARGO\u CFG\u TARGET\u OS=linux
环境货物\u CFG\u目标\u指针\u宽度=32
环境货物特征默认值=1
环境货物功能开发铀储备=1
环境货物特征RSA签名=1
环境货物特性使用堆=1
ENV-LD=/usr/bin/arm-linux-gnueabihf-LD
ENV LD_LIBRARY_PATH=/src/parity/target/release/deps:/root/.rustup/toolschains/stable-x86_64-unknown-linux-gnu/lib:/root/.rustup/toolschains/stable-x86_64-unknown-linux-gnu/lib
ENV QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf/libc
运行wgethttps://github.com/raspberrypi/tools/archive/$RASPBERRY\u PI\u TOOLS\u COMMIT\u ID.zip-O/root/PI-TOOLS.zip
运行unzip/root/pi-tools.zip-d/root
运行mv/root/tools-$RASPBERRY\u PI\u tools\u COMMIT\u ID/root/PI tools
ENV PATH=/root/pi tools/arm-bcm2708/arm-linux gnueabihf/bin:$PATH
ENV PATH=/root/pi tools/arm-bcm2708/arm-linux-gnueabihf/libexec/gcc/arm-linux-gnueabihf/4.8.3:$PATH
#安装铁锈。
长卷https://sh.rustup.rs -sSf | sh-s--y--冗长
环境路径=/root/.cargo/bin:$PATH
#安装臂目标以防生锈。
运行rustup目标添加arm未知linux gnueabihf
#为arm目标配置链接器。
环境包装配置允许交叉=1
运行echo'[target.arm unknown linux gnueabihf]\nlinker=“arm linux gnueabihf gcc”>>/root/.cargo/config
ENV USER=root
运行新货物/src
WORKDIR/src
运行git克隆https://github.com/paritytech/parity &&光盘奇偶校验&\
/root/.cargo/bin/rustup目标添加arm未知linux gnueabihf&&\
/root/.cargo/bin/cargo build--target=arm未知linux gnueabihf--release--features final
#验证输出文件是否适用于armv6
运行readelf--arch-specific./target/arm-unknown-linux-gnueabihf/debug/src
运行文件/build/parity/target/armv7 unknown linux gnueabihf/release/parity
曝光808085458180
入口点[“/build/parity/target/armv7未知linux gnueabihf/release/parity”]
错误是:

进程未成功退出:`/src/parity/target/release/build/backtrace-sys-3c9a41016b6512eb/build script build`(退出代码:101)
---stdout
TARGET=Some(“x86_64-unknown-linux-gnu”)
OPT_级别=部分(“3”)
HOST=Some(“x86_64-unknown-linux-gnu”)
CC_x86_64-unknown-linux-gnu=None
CC_x86_64_未知_linux_gnu=None
主机_CC=None
CC=Some(“arm linux gnueabihf gcc”)
CFLAGS_x86_64-unknown-linux-gnu=None
CFLAGS\u x86\u 64\u未知\u linux\u gnu=None
主机\u CFLAGS=无
CFLAGS=无
DEBUG=Some(“false”)
正在运行:“arm linux gnueabihf gcc”“-O3”“-F函数节”“-fdata节”“-fPIC”“-m64”“-I”“src/libbacktrace”“-I”“/src/parity/target/release/build/backtrace-sys-5fc2d3da7fb5f8d4/out”“-fvisibility=hidden”“-DBACKTRACE\u ELF\u SIZE=64”“-DBACKTRACE\u SUPPORTED=1”“-DBACKTRACE\u USES\u MALLOC=1”“-DBACKTRACE\u SUPPORTED\u THREADS=0”“-DBACKTRACE\u支持\u DATA=0”“-DHAVE\u DL\u ITERATE\u PHDR=1”“-D\u GNU\u SOURCE=1”“-D\u LARGE\u FILES=1”“-DBACKTRACE\u full=\u rbt\u backtrace\u full”“-DBACKTRACE\u dwarw\u add=\u rbt\u backtrace\u add”“-DBACKTRACE\u initialize=\u rbt\u backtrace\u initialize”“-DBACKTRACE\u pcinfo=\DBACKTRACE\u backtrace\symu-pcinfo=”符号信息-Dbacktrace\u get\u view=\u rbt\u backtrace\u get\u view”“-Dbacktrace\u release\u view=\u rbt\u backtrace\u release\u view”“-Dbacktrace\u alloc=\u rbt\u backtrace\u alloc”“-Dbacktrace\u free=\u rbt\u backtrace\u free”“-Dbacktrace\u vector\u finish=\u rbt\u backtrace\u vector\u finish”“-Dbacktrace\u向量增长-Dbacktrace\u vector\u release=\u rbt\u backtrace\u vector\u release”“-Dbacktrace\u close=\u rbt\u backtrace\u close”“-Dbacktrace\u open=\u rbt\u backtrace\u open”“-Dbacktrace\u print=\u rbt\u backtrace\u print”“-Dbacktrace\u simple=\u rbt\u backtrace\u-simple”“-Dbacktrace\u-qsort=\u backtrace\u backtrace\u创建状态-Dbacktrace\u uncompress\u zdebug=\u rbt\u backtrace\u uncompress\u zdebug”“-o”“/src/parity/target/release/build/backtrace-sys-5fc2d3da7fb5f8d4/out/src/libbacktrace/alloc.o”“-c”“src/libbacktrace/alloc.c”
cargo:warning=arm-linux-gnueabihf-gcc:error:无法识别的命令行选项'-m64'
退出代码:1
---斯特德尔
主螺纹
我已经在Dockerfile中设置了我的
ENV TARGET=arm unknown linux gnueabihf
,但是当错误发生时,它抱怨不理解
-m64
是什么,它正在编译
TARGET=Some(“x86_64-unknown-linux-gnu”)
,这不是我指定的目标

如何使编译使用Dockerfile中指定的原始目标

未被Cargo使用。Cargo可通过以下环境变量进行配置:

除了上面的TOML语法之外,Cargo还可以通过环境变量进行配置。对于上述表单
foo.bar
的每个配置键,环境变量
Cargo\u foo\u bar
也可以用于定义值。例如
build.jobs
键也可以由
Cargo\u build\u jobs定义de>

您被为构建脚本设置的环境变量弄糊涂了:

Cargo在运行构建脚本时设置多个环境变量。由于在编译构建脚本时尚未设置这些变量,因此上面的示例使用<