16.31 Ubuntu 22中找不到libcrypto.so.1.1 https://scz.617.cn/unix/202604291930.txt Q: 当前系统是Ubuntu 22。执行wasm2c 1.0.36时,提示找不到libcrypto.so.1.1。用 ldd查看,确实找不到。 $ ldd /path/wabt-1.0.36/bin/wasm2c libcrypto.so.1.1 => not found 但之前wasm2c 1.0.34无此问题。 A: 参看 -------------------------------------------------------------------------- Ubuntu的旧版OpenSSL https://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/ OpenSSL源码 https://openssl-library.org/source/old/index.html https://openssl-library.org/source/old/1.1.1/ https://www.openssl.org/source/openssl-1.1.1w.tar.gz https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz -------------------------------------------------------------------------- wasm2c 1.0.36用到libcrypto.so.1.1,而Ubuntu 22用OpenSSL 3.0。 $ ls -l /usr/lib/x86_64-linux-gnu/libcrypto.so* lrwxrwxrwx 1 root root 14 Feb 7 2023 /usr/lib/x86_64-linux-gnu/libcrypto.so -> libcrypto.so.3 -rw-r--r-- 1 root root 4451632 Feb 7 2023 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 $ dpkg -S /usr/lib/x86_64-linux-gnu/libcrypto.so.3 libssl3:amd64: /usr/lib/x86_64-linux-gnu/libcrypto.so.3 $ apt list libssl* (略) $ apt-cache search libssl3 libssl3 - Secure Sockets Layer toolkit - shared libraries $ apt-cache search libssl1 (无输出) Ubuntu 22已无法正常安装libssl1。有人手工下载旧版libssl1.1*.deb,再dpkg安装。 比如 wget https://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb 用dpkg安装旧版,太野了,并不推荐。较文明的办法是下载低版本OpenSSL源码,自 己编译低版本,并设置环境变量。比如 -------------------------------------------------------------------------- mkdir $HOME/opt cd $HOME/opt wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar xvfz openssl-1.1.1w.tar.gz cd openssl-1.1.1w ./config make mkdir $HOME/opt/lib cp $HOME/opt/openssl-1.1.1w/libcrypto.so.1.1 $HOME/opt/lib/ cp $HOME/opt/openssl-1.1.1w/libssl.so.1.1 $HOME/opt/lib/ export LD_LIBRARY_PATH=$HOME/opt/lib:$LD_LIBRARY_PATH -------------------------------------------------------------------------- 前述几种办法我都没采用,因为Ubuntu 22的snap机制可能有libssl1,复用之。 $ ls -l /snap/core20/current/usr/lib/x86_64-linux-gnu/libcrypto.so* -rw-r--r-- 1 root root 2954080 May 25 2023 /snap/core20/current/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 $ ldd /snap/core20/current/usr/lib/x86_64-linux-gnu/libcrypto.so* (略) $ ln -s /snap/core20/current/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 $ /path/wabt-1.0.36/bin/wasm2c --version 1.0.36 $ ldd /path/wabt-1.0.36/bin/wasm2c (略) A: bluerust 直接从旧版deb中析取单个文件,无需安装。比如 dpkg --fsys-tarfile libssl1.1_1.1.1f-1ubuntu2_amd64.deb | tar xO ./usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 > libcrypto.so.1.1 tar的参数O是字母欧,不是数字零。