Skip to content

Problem to build openssl /openssl-sys on Linux (Ubuntu/Mint) #1802

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
obioma opened this issue Jan 23, 2023 · 3 comments
Closed

Problem to build openssl /openssl-sys on Linux (Ubuntu/Mint) #1802

obioma opened this issue Jan 23, 2023 · 3 comments

Comments

@obioma
Copy link

obioma commented Jan 23, 2023

Hi,
I stated to learn Rust and got stocked when using reqwest- it having an dependency on rust-openssl. And openssl I'm not able to build.
To have shorter try-and-err cycles, I set up a simple project, only using rust-openssl.
Here my Cargo.toml:

[package]
name = "build_openssl"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
#openssl = {version = "0.10.45", feature = "vendored"}
#openssl-sys = {version = "0.9.80", feature = "vendored"}
openssl = {version = "0.10.45"}
openssl-sys = {version = "0.9.80"}

.cargo/config.toml continas

[build]
target = "wasm32-unknown-unknown"

I inseted some println! macros (output recognizable by 'Obioma: ...') in the build rust code, trying to understand the topic - but nada. Got stocked.
Here the output from cargo build -vv

Compiling openssl-sys v0.9.80
     Running `CARGO=/home/Obioma
  -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo
 CARGO_CRATE_NAME=build_script_main
 CARGO_MANIFEST_DIR=/home/Obioma
  -/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80
 CARGO_PKG_AUTHORS='Alex Crichton <[email protected]>:Steven Fackler <[email protected]>'
 CARGO_PKG_DESCRIPTION='FFI bindings to OpenSSL'
 CARGO_PKG_HOMEPAGE=''
 CARGO_PKG_LICENSE=MIT CARGO_PKG_LICENSE_FILE=''
 CARGO_PKG_NAME=openssl-sys
 CARGO_PKG_REPOSITORY='https://github.com/sfackler/rust-openssl'
 CARGO_PKG_RUST_VERSION=''
 CARGO_PKG_VERSION=0.9.80
 CARGO_PKG_VERSION_MAJOR=0
 CARGO_PKG_VERSION_MINOR=9
 CARGO_PKG_VERSION_PATCH=80
 CARGO_PKG_VERSION_PRE=''
 LD_LIBRARY_PATH='/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps:/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib:/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib'
   rustc
   --crate-name build_script_main /home/Obioma
 -/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80/build/main.rs
  --error-format=json
  --json=diagnostic-rendered-ansi,artifacts,future-incompat
  --crate-type bin
  --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=489b3d672978c77a -C extra-filename=-489b3d672978c77a
  --out-dir /home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/build/openssl-sys-489b3d672978c77a -L dependency=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps
  --extern autocfg=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps/libautocfg-9fb091cf1770a8cc.rlib
  --extern cc=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps/libcc-373a56eeff27613a.rlib
  --extern pkg_config=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps/libpkg_config-1d8d1db38cd59d8e.rlib
  --cap-lints warn`

[openssl-sys 0.9.80] Obioma  -: Hi there
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] cargo:rustc-cfg=const_fn
[openssl-sys 0.9.80] cargo:rustc-cfg=openssl
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
[openssl-sys 0.9.80] X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
[openssl-sys 0.9.80] OPENSSL_LIB_DIR = /usr/lib/i386-linux-gnu
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
[openssl-sys 0.9.80] X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
[openssl-sys 0.9.80] OPENSSL_INCLUDE_DIR = /usr/lib/i386-linux-gnu
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
[openssl-sys 0.9.80] X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=OPENSSL_DIR
[openssl-sys 0.9.80] OPENSSL_DIR = /usr/lib/i386-linux-gnu
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] Obioma  -: include_dir "/usr/lib/i386-linux-gnu"
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] cargo:include=/usr/lib/i386-linux-gnu
[openssl-sys 0.9.80] cargo:rerun-if-changed=build/expando.c
[openssl-sys 0.9.80] OPT_LEVEL = Some("0")
[openssl-sys 0.9.80] TARGET = Some("x86_64-unknown-linux-gnu")
[openssl-sys 0.9.80] HOST = Some("x86_64-unknown-linux-gnu")
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CC_x86_64-unknown-linux-gnu
[openssl-sys 0.9.80] CC_x86_64-unknown-linux-gnu = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CC_x86_64_unknown_linux_gnu
[openssl-sys 0.9.80] CC_x86_64_unknown_linux_gnu = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=HOST_CC
[openssl-sys 0.9.80] HOST_CC = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CC
[openssl-sys 0.9.80] CC = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
[openssl-sys 0.9.80] CFLAGS_x86_64-unknown-linux-gnu = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
[openssl-sys 0.9.80] CFLAGS_x86_64_unknown_linux_gnu = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=HOST_CFLAGS
[openssl-sys 0.9.80] HOST_CFLAGS = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CFLAGS
[openssl-sys 0.9.80] CFLAGS = None
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
[openssl-sys 0.9.80] CRATE_CC_NO_DEFAULTS = None
[openssl-sys 0.9.80] DEBUG = Some("true")
[openssl-sys 0.9.80] CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
[openssl-sys 0.9.80] running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-gdwarf-4" "-fno-omit-frame-pointer" "-m64" "-I" "/usr/lib/i386-linux-gnu" "-Wall" "-Wextra" "-E" "build/expando.c"
[openssl-sys 0.9.80] exit status: 0
[openssl-sys 0.9.80] version: 3_0_2
[openssl-sys 0.9.80] cargo:rustc-cfg=osslconf="OPENSSL_NO_IDEA"
[openssl-sys 0.9.80] cargo:rustc-cfg=osslconf="OPENSSL_NO_SSL3_METHOD"
[openssl-sys 0.9.80] cargo:conf=OPENSSL_NO_IDEA,OPENSSL_NO_SSL3_METHOD
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl300
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl101
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl102
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl102f
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl102h
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl110
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl110f
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl110g
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl110h
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl111
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl111b
[openssl-sys 0.9.80] cargo:rustc-cfg=ossl111c
[openssl-sys 0.9.80] cargo:version_number=30000020
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] Obioma  -: version Openssl3xx
[openssl-sys 0.9.80] 
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIBS
[openssl-sys 0.9.80] X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIBS unset
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=OPENSSL_LIBS
[openssl-sys 0.9.80] OPENSSL_LIBS = /usr/lib/i386-linux-gnu/libssl.so
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_STATIC
[openssl-sys 0.9.80] X86_64_UNKNOWN_LINUX_GNU_OPENSSL_STATIC unset
[openssl-sys 0.9.80] cargo:rerun-if-env-changed=OPENSSL_STATIC
[openssl-sys 0.9.80] OPENSSL_STATIC = 1
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] Obioma  -: kind static
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] cargo:rustc-link-lib=static=/usr/lib/i386-linux-gnu/libssl.so
[openssl-sys 0.9.80]
[openssl-sys 0.9.80] Obioma  -: CARGO_CFG_TARGET_OS linux
[openssl-sys 0.9.80]
     Running `/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/build/openssl-47345af0cd08d45e/build-script-build`
     Running `CARGO=/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo
 CARGO_CRATE_NAME=openssl_sys
 CARGO_MANIFEST_DIR=/home/Obioma
 -/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80
 CARGO_PKG_AUTHORS='Alex Crichton <[email protected]>:Steven Fackler <[email protected]>'
 CARGO_PKG_DESCRIPTION='FFI bindings to OpenSSL'
 CARGO_PKG_HOMEPAGE=''
 CARGO_PKG_LICENSE=MIT
 CARGO_PKG_LICENSE_FILE=''
 CARGO_PKG_NAME=openssl-sys
 CARGO_PKG_REPOSITORY='https://github.com/sfackler/rust-openssl'
 CARGO_PKG_RUST_VERSION=''
 CARGO_PKG_VERSION=0.9.80
 CARGO_PKG_VERSION_MAJOR=0
 CARGO_PKG_VERSION_MINOR=9
 CARGO_PKG_VERSION_PATCH=80
 CARGO_PKG_VERSION_PRE='' LD_LIBRARY_PATH='/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps:/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib:/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib' OUT_DIR=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/build/openssl-sys-bc14a8b421a7183d/out rustc --crate-name openssl_sys /home/Obioma
 -/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=1c4b018a1dc16185 -C extra-filename=-1c4b018a1dc16185 --out-dir /home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps -L dependency=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps --extern libc=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps/liblibc-8e5778b1d45b91a8.rmeta --cap-lints warn -l static=/usr/lib/i386-linux-gnu/libssl.so --cfg const_fn --cfg openssl --cfg 'osslconf="OPENSSL_NO_IDEA"' --cfg 'osslconf="OPENSSL_NO_SSL3_METHOD"' --cfg ossl300 --cfg ossl101 --cfg ossl102 --cfg ossl102f --cfg ossl102h --cfg ossl110 --cfg ossl110f --cfg ossl110g --cfg ossl110h --cfg ossl111 --cfg ossl111b --cfg ossl111c`
[openssl 0.10.45] cargo:rustc-cfg=osslconf="OPENSSL_NO_IDEA"
[openssl 0.10.45] cargo:rustc-cfg=osslconf="OPENSSL_NO_SSL3_METHOD"
[openssl 0.10.45] cargo:rustc-cfg=ossl101
[openssl 0.10.45] cargo:rustc-cfg=ossl102
[openssl 0.10.45] cargo:rustc-cfg=ossl110
[openssl 0.10.45] cargo:rustc-cfg=ossl110g
[openssl 0.10.45] cargo:rustc-cfg=ossl110h
[openssl 0.10.45] cargo:rustc-cfg=ossl111
[openssl 0.10.45] cargo:rustc-cfg=ossl300

**error: could not find native static library `/usr/lib/i386-linux-gnu/libssl.so`, perhaps an -L flag is missing?**

**error: could not compile `openssl-sys` due to previous error**

Caused by:
  process didn't exit successfully: `CARGO=/home/Obioma
  -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo 
 CARGO_CRATE_NAME=openssl_sys 
 CARGO_MANIFEST_DIR=/home/Obioma
  -/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80 
 CARGO_PKG_AUTHORS='Alex Crichton <[email protected]>:Steven Fackler <[email protected]>' 
 CARGO_PKG_DESCRIPTION='FFI bindings to OpenSSL' 
 CARGO_PKG_HOMEPAGE='' 
 CARGO_PKG_LICENSE=MIT CARGO_PKG_LICENSE_FILE='' 
 CARGO_PKG_NAME=openssl-sys 
 CARGO_PKG_REPOSITORY='https://github.com/sfackler/rust-openssl' 
 CARGO_PKG_RUST_VERSION='' 
 CARGO_PKG_VERSION=0.9.80 
 CARGO_PKG_VERSION_MAJOR=0 
 CARGO_PKG_VERSION_MINOR=9 
 CARGO_PKG_VERSION_PATCH=80 
 CARGO_PKG_VERSION_PRE='' LD_LIBRARY_PATH='/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps:/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib:/home/Obioma
 -/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib' OUT_DIR=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/build/openssl-sys-bc14a8b421a7183d/out rustc --crate-name openssl_sys /home/Obioma
 -/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80/src/lib.rs 
  --error-format=json 
  --json=diagnostic-rendered-ansi,artifacts,future-incompat 
  --crate-type lib 
  --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=1c4b018a1dc16185 -C extra-filename=-1c4b018a1dc16185 --out-dir /home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps -L dependency=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps 
  --extern libc=/home/Obioma
 -/SWProjects/RustProjects/build_openssl/target/debug/deps/liblibc-8e5778b1d45b91a8.rmeta 
  --cap-lints warn -l static=/usr/lib/i386-linux-gnu/libssl.so 
  --cfg const_fn --cfg openssl --cfg 'osslconf="OPENSSL_NO_IDEA"' 
  --cfg 'osslconf="OPENSSL_NO_SSL3_METHOD"' 
  --cfg ossl300 
  --cfg ossl101 
  --cfg ossl102 
  --cfg ossl102f 
  --cfg ossl102h 
  --cfg ossl110 
  --cfg ossl110f 
  --cfg ossl110g 
  --cfg ossl110h 
  --cfg ossl111 
  --cfg ossl111b 
  --cfg ossl111c` 
  (exit status: 1)
warning: build failed, waiting for other jobs to finish...

The referenced directory  usr/lib/i386-linux-gnu contains libcrypto.so and libssl.so, the later linked to libssl3.so.
To be on the safe side, I downloaded the openssl sources and compiled it into a extra folder, using that as target (changing all the environment vars).

I also tried export

RUSTFLAGS=-L ssl='/home/gunter/Apps/openssl-3.0.7/libssl.so'

, no success. I have not too many ideas what else to fix, any suggestions?

Thx in advance

@sfackler
Copy link
Owner

#1794 (comment)

@obioma
Copy link
Author

obioma commented Jan 24, 2023

Hi Steven,
thx, will investigate into that direction.
In the meantime I saw that in the Cargo.toml for openssl-sys version 1.1.1. from Openssl is referred as depenency.

[build-dependencies.openssl-src]
version = "111"
optional = true

While in openssl-src it is stated that main is targeting main which builds OpenSSL 3.0.
As this is optional I try to link to a static OpenSsl 3.0 library I don't believe it is related to my problem, but it might be worth to adjust.

@obioma
Copy link
Author

obioma commented Jan 26, 2023

Got it working,root cause was me setting the environment variables wrong. The compiler message referring to the -L flag confused me, but now I got it right.
Here my settings (for Linux), in case anybody has similar issues.

#  .bashrc
export OPENSSL_LIBS=ssl:crypto 
export OPENSSL_STATIC=1
export OPENSSL_INCLUDE_DIR=/<PATH_TO_STATIC LIBRARY_FOR_OPENSSL>/openssl-3.0.7  #  <-- not sure if needed for static linkage
export OPENSSL_LIB_DIR=/<PATH_TO_STATIC LIBRARY_FOR_OPENSSL/openssl-3.0.7 

Thx
Obioma

@obioma obioma closed this as completed Jan 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants