编译包含用于aarch64的C库的铁锈箱时出现问题 [英] Trouble compiling rust crates that include C libraries for aarch64

查看:29
本文介绍了编译包含用于aarch64的C库的铁锈箱时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在aarch64 Linux docker容器中编译一个rust应用程序,以便在raspberry pi 4上运行。除了包不是纯粹的rust并使用c库之外,我还有其他工作要做。ring crate就是这样的一个例子,当我尝试在不设置ENV TARGET_CC=something的情况下构建环库时,它失败了,错误如下:

#18 32.35    Compiling ring v0.16.19
#18 38.13 error: failed to run custom build command for `ring v0.16.19`
#18 38.13 
#18 38.13 Caused by:
#18 38.13   process didn't exit successfully: `/usr/src/content-manager/target/release/build/ring-902dd3bf18c6ec17/build-script-build` (exit code: 101)
#18 38.13   --- stdout
#18 38.13   OPT_LEVEL = Some("3")
#18 38.13   TARGET = Some("aarch64-unknown-linux-musl")
#18 38.13   HOST = Some("aarch64-unknown-linux-gnu")
#18 38.13   CC_aarch64-unknown-linux-musl = None
#18 38.13   CC_aarch64_unknown_linux_musl = None
#18 38.13   TARGET_CC = Some("aarch64-linux-musl-gcc")
#18 38.13   CFLAGS_aarch64-unknown-linux-musl = None
#18 38.13   CFLAGS_aarch64_unknown_linux_musl = None
#18 38.13   TARGET_CFLAGS = None
#18 38.13   CFLAGS = None
#18 38.13   CRATE_CC_NO_DEFAULTS = None
#18 38.13   DEBUG = Some("false")
#18 38.13   CARGO_CFG_TARGET_FEATURE = None
#18 38.13 
#18 38.13   --- stderr
#18 38.13   running "aarch64-linux-musl-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aesv8-armx-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/aesv8-armx-linux64.S"
#18 38.13   thread 'main' panicked at 'execution failed', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/build.rs:673:9
#18 38.13   note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

在环build docs中提到需要设置TARGET_CC和TARGET_AR,当我将TARGET_CC设置为AARCH64-LINUX-GNU-GCC时,我收到以下错误

#18 62.62   process didn't exit successfully: `/usr/src/content-manager/target/release/build/ring-902dd3bf18c6ec17/build-script-build` (exit code: 1)
#18 62.62   --- stdout
#18 62.62   OPT_LEVEL = Some("3")
#18 62.62   TARGET = Some("aarch64-unknown-linux-musl")
#18 62.62   HOST = Some("aarch64-unknown-linux-gnu")
#18 62.62   CC_aarch64-unknown-linux-musl = None
#18 62.62   CC_aarch64_unknown_linux_musl = None
...
#18 62.62   CRATE_CC_NO_DEFAULTS = None
#18 62.62   DEBUG = Some("false")
#18 62.62   CARGO_CFG_TARGET_FEATURE = None
#18 62.62   running: "aarch64-linux-musl-ar" "cq" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/libring-core.a" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aesv8-armx-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ghashv8-armx-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/vpaes-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/armv8-mont-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/chacha-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz256-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ghash-neon-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/sha512-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/sha256-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aes_nohw.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/montgomery.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/montgomery_inv.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/limbs.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/mem.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/poly1305.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/crypto.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/curve25519.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz256.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/gfp_p256.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/gfp_p384.o"
#18 62.62   exit code: 127
#18 62.62 
#18 62.62   --- stderr
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aesv8-armx-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/aesv8-armx-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ghashv8-armx-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/ghashv8-armx-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/vpaes-armv8-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/vpaes-armv8-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/armv8-mont-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/armv8-mont-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/chacha-armv8-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/chacha-armv8-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz256-armv8-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/ecp_nistz256-armv8-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ghash-neon-armv8-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/ghash-neon-armv8-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/sha512-armv8-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/sha512-armv8-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/sha256-armv8-linux64.o" "/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/pregenerated/sha256-armv8-linux64.S"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aes_nohw.o" "crypto/fipsmodule/aes/aes_nohw.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/montgomery.o" "crypto/fipsmodule/bn/montgomery.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/montgomery_inv.o" "crypto/fipsmodule/bn/montgomery_inv.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/limbs.o" "crypto/limbs/limbs.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/mem.o" "crypto/mem.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/poly1305.o" "crypto/poly1305/poly1305.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/crypto.o" "crypto/crypto.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/curve25519.o" "crypto/curve25519/curve25519.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz.o" "crypto/fipsmodule/ec/ecp_nistz.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz256.o" "crypto/fipsmodule/ec/ecp_nistz256.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/gfp_p256.o" "crypto/fipsmodule/ec/gfp_p256.c"
#18 62.62   running "aarch64-linux-gnu-gcc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-g3" "-U_FORTIFY_SOURCE" "-DNDEBUG" "-c" "-o/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/gfp_p384.o" "crypto/fipsmodule/ec/gfp_p384.c"
#18 62.62 
#18 62.62 
#18 62.62   error occurred: Command "aarch64-linux-musl-ar" "cq" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/libring-core.a" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aesv8-armx-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ghashv8-armx-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/vpaes-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/armv8-mont-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/chacha-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz256-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ghash-neon-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/sha512-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/sha256-armv8-linux64.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/aes_nohw.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/montgomery.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/montgomery_inv.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/limbs.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/mem.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/poly1305.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/crypto.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/curve25519.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/ecp_nistz256.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/gfp_p256.o" "/usr/src/content-manager/target/aarch64-unknown-linux-musl/release/build/ring-ce2ec03868462ce3/out/gfp_p384.o" with args "aarch64-linux-musl-ar" did not execute successfully (status code exit code: 127).
#18 62.62 
#18 62.62 
我不是很了解C编译器的所有风格,以及我需要什么组合才能使其工作,但似乎(希望)我只需要一个小的配置或环境变量更改就能够在aarch64上编译我需要的所有包。希望有人能为我提供一些相关文档,或者为我提供一个例子或答案,告诉我需要将哪些环境变量设置为什么值才能使其正常工作。

货运量

[package]
name = "app"
version = "0.1.0"
authors = ["Marcus Ruddick"]
edition = "2018"

[dependencies]
ring = "0.16.19"

文档文件

FROM rust as builder
ARG APP_NAME="app"
ARG TARGET="aarch64-unknown-linux-musl"
ARG GITHUB_SSH_KEY=""
RUN apt-get update
RUN apt-get install gcc-aarch64-linux-gnu -y
RUN rustup target add $TARGET;
RUN mkdir /usr/src/$APP_NAME
WORKDIR /usr/src/$APP_NAME

ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
ENV TARGET_CC=aarch64-linux-gnu-gcc

COPY Cargo.toml Cargo.lock ./
COPY ./src ./src

RUN mkdir /root/.ssh/
RUN echo "$GITHUB_SSH_KEY" > /root/.ssh/id_rsa;
RUN chmod 400 /root/.ssh/id_rsa
RUN ssh-keyscan -H github.com >> /etc/ssh/ssh_known_hosts

RUN cargo build --release --target=$TARGET
RUN groupadd -g 10001 -r $APP_NAME
RUN useradd -r -g $APP_NAME -u 10001 $APP_NAME

# ------------------------------------------------------------------------------

FROM scratch
ARG APP_NAME="app"
ARG TARGET="aarch64-unknown-linux-musl"
WORKDIR /user/local/bin/
COPY --from=0 /etc/passwd /etc/passwd
COPY --from=builder /usr/src/$APP_NAME/target/$TARGET/release/$APP_NAME ./app
USER $APP_NAME

CMD ["./app"]

生成命令

$ docker buildx build --load --platform=linux/arm64 -t myrepo/mytag:arm-0.0.1 .

推荐答案

在复制了this file中提到的here

中的环境变量后,我能够使其工作

我更新的Dockerfile如下所示

FROM rust as builder
ARG APP_NAME="app"
ARG TARGET="aarch64-unknown-linux-musl"
ARG GITHUB_SSH_KEY=""
RUN apt-get update
RUN apt-get install clang llvm -y
RUN rustup target add $TARGET
RUN mkdir /usr/src/$APP_NAME
WORKDIR /usr/src/$APP_NAME

ENV CARGO_NET_GIT_FETCH_WITH_CLI=true

ENV CC_aarch64_unknown_linux_musl=clang
ENV AR_aarch64_unknown_linux_musl=llvm-ar
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld"
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUNNER="qemu-aarch64 -L /usr/aarch64-linux-gnu"

COPY Cargo.toml Cargo.lock ./
COPY ./src ./src

RUN mkdir /root/.ssh/
RUN echo "$GITHUB_SSH_KEY" > /root/.ssh/id_rsa;
RUN chmod 400 /root/.ssh/id_rsa
RUN ssh-keyscan -H github.com >> /etc/ssh/ssh_known_hosts

RUN cargo build --release --target=$TARGET
RUN groupadd -g 10001 -r $APP_NAME
RUN useradd -r -g $APP_NAME -u 10001 $APP_NAME

# ------------------------------------------------------------------------------

FROM scratch
ARG APP_NAME="app"
ARG TARGET="aarch64-unknown-linux-musl"
WORKDIR /user/local/bin/
COPY --from=0 /etc/passwd /etc/passwd
COPY --from=builder /usr/src/$APP_NAME/target/$TARGET/release/$APP_NAME ./app
USER $APP_NAME

CMD ["./app"]

通过此设置,二进制文件将从临时容器编译并运行,感谢@hhk向我指出有关此主题的未解决问题

这篇关于编译包含用于aarch64的C库的铁锈箱时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆