WSL Ubuntu Cargo Rust openssl 环境变量未设置

gin*_*dev 6 openssl rust rust-cargo windows-subsystem-for-linux

我已经尝试安装和重新安装 pkg-config 和 libssl-dev。看起来好像在安装时未设置 openssl 环境变量。所有其他帖子都建议安装 pkg-config 和 libssl-dev 但这在这里不起作用。有什么建议么?

\n

我认为这与 WSL 有关,因为它在完整的 Ubuntu 安装上运行得很好。

\n
   Compiling openssl-sys v0.9.61\nThe following warnings were emitted during compilation:\n\nwarning: build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token\nwarning:     4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v\nwarning:       |                        ^~~~~~~~~~~~~\nwarning: build/expando.c:5:23: note: in expansion of macro \xe2\x80\x98VERSION2\xe2\x80\x99\nwarning:     5 | #define VERSION(n, v) VERSION2(n, v)\nwarning:       |                       ^~~~~~~~\nwarning: build/expando.c:10:1: note: in expansion of macro \xe2\x80\x98VERSION\xe2\x80\x99\nwarning:    10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)\nwarning:       | ^~~~~~~\n\nerror: failed to run custom build command for `openssl-sys v0.9.61`\n\nCaused by:\n  process didn't exit successfully: `/home/andrew/noaa-weather/target/debug/build/openssl-sys-807532aa820f3352/build-script-main` (exit code: 101)\n  --- stdout\n  cargo:rustc-cfg=const_fn\n  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR\n  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset\n  cargo:rerun-if-env-changed=OPENSSL_LIB_DIR\n  OPENSSL_LIB_DIR unset\n  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR\n  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset\n  cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR\n  OPENSSL_INCLUDE_DIR unset\n  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR\n  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset\n  cargo:rerun-if-env-changed=OPENSSL_DIR\n  OPENSSL_DIR unset\n  cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG\n  cargo:rerun-if-env-changed=PKG_CONFIG\n  cargo:rerun-if-env-changed=OPENSSL_STATIC\n  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu\n  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu\n  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH\n  cargo:rerun-if-env-changed=PKG_CONFIG_PATH\n  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu\n  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu\n  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu\n  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR\n  cargo:rerun-if-env-changed=SYSROOT\n  cargo:rerun-if-env-changed=OPENSSL_STATIC\n  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC\n  cargo:rustc-link-search=native=/usr/local/lib\n  cargo:rustc-link-lib=ssl\n  cargo:rustc-link-lib=crypto\n  cargo:rerun-if-env-changed=PKG_CONFIG\n  cargo:rerun-if-env-changed=OPENSSL_STATIC\n  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC\n  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu\n  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu\n  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH\n  cargo:rerun-if-env-changed=PKG_CONFIG_PATH\n  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu\n  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu\n  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu\n  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR\n  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR\n  OPT_LEVEL = Some("0")\n  TARGET = Some("x86_64-unknown-linux-gnu")\n  HOST = Some("x86_64-unknown-linux-gnu")\n  CC_x86_64-unknown-linux-gnu = None\n  CC_x86_64_unknown_linux_gnu = None\n  HOST_CC = None\n  CC = None\n  CFLAGS_x86_64-unknown-linux-gnu = None\n  CFLAGS_x86_64_unknown_linux_gnu = None\n  HOST_CFLAGS = None\n  CFLAGS = None\n  CRATE_CC_NO_DEFAULTS = None\n  DEBUG = Some("true")\n  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")\n  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-m64" "-I" "/usr/local/include" "-Wall" "-Wextra" "-E" "build/expando.c"\n  cargo:warning=build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token\n  cargo:warning=    4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v\n  cargo:warning=      |                        ^~~~~~~~~~~~~\n  cargo:warning=build/expando.c:5:23: note: in expansion of macro \xe2\x80\x98VERSION2\xe2\x80\x99\n  cargo:warning=    5 | #define VERSION(n, v) VERSION2(n, v)\n  cargo:warning=      |                       ^~~~~~~~\n  cargo:warning=build/expando.c:10:1: note: in expansion of macro \xe2\x80\x98VERSION\xe2\x80\x99\n  cargo:warning=   10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)\n  cargo:warning=      | ^~~~~~~\n  exit code: 1\n\n  --- stderr\n  thread 'main' panicked at '\n  Header expansion error:\n  Error { kind: ToolExecError, message: "Command \\"cc\\" \\"-O0\\" \\"-ffunction-sections\\" \\"-fdata-sections\\" \\"-fPIC\\" \\"-g\\" \\"-fno-omit-frame-pointer\\" \\"-m64\\" \\"-I\\" \\"/usr/local/include\\" \\"-Wall\\" \\"-Wextra\\" \\"-E\\" \\"build/expando.c\\" with args \\"cc\\" did not execute successfully (status code exit code: 1)." }\n\n  Failed to find OpenSSL development headers.\n\n  You can try fixing this setting the `OPENSSL_DIR` environment variable\n  pointing to your OpenSSL installation or installing OpenSSL headers package\n  specific to your distribution:\n\n      # On Ubuntu\n      sudo apt-get install libssl-dev\n      # On Arch Linux\n      sudo pacman -S openssl\n      # On Fedora\n      sudo dnf install openssl-devel\n\n  See rust-openssl README for more information:\n\n      https://github.com/sfackler/rust-openssl#linux\n
Run Code Online (Sandbox Code Playgroud)\n

eco*_*coe 0

正如评论所述,OpenSSL3.x可能不兼容,但您可以安装最新1.1.1版本:

# latest March 2023 release 

ENV OPENSSL_DIR="/opt/openssl"

curl "https://www.openssl.org/source/openssl-1.1.1t.tar.gz" \
  --output "/tmp/openssl.tar.gz"
mkdir --parent "/tmp/openssl"
tar \
  --extract \
  --file="/tmp/openssl.tar.gz" \
  --strip=1 \
  --directory="/tmp/openssl"
( \
  cd "${TMP}/openssl" \
  ./config \
    --prefix="/opt/openssl" \
    --openssldir="/opt/openssl" \
  make && make install \
)
Run Code Online (Sandbox Code Playgroud)

笔记:

1.1.1因此,如果可以的话,现在坚持下去可能会更加谨慎。