树莓派本地编译代码时openssl报错
报错内容
/usr/lib/gcc/arm-linux-gnueabihf/6/../../../libcurl.so: undefined reference to `SSL_CTX_set_keylog_callback@OPENSSL_1_1_1'
/usr/lib/gcc/arm-linux-gnueabihf/6/../../../libcurl.so: undefined reference to `SSL_CTX_set_post_handshake_auth@OPENSSL_1_1_1'
/usr/lib/gcc/arm-linux-gnueabihf/6/../../../libcurl.so: undefined reference to `SSL_CTX_set_ciphersuites@OPENSSL_1_1_1'
树莓派本地查询openssl版本号依然报错
openssl version
报错内容:
openssl: /usr/lib/arm-linux-gnueabihf/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by openssl)
openssl: /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1: version `OPENSSL_1_1_1' not found (required by openssl)
问题源头:
经查询主要是LD_LIBRARY_PATH这个环境变量没有指定,导致openssl正在使用旧的系统OpenSSL库
解决方案:
临时解决:终端输入以下命令,临时添加openssl库的环境变量,但此种方式只能保证当前终端有效,若开启新终端依旧会报错
export LD_LIBRARY_PATH=/usr/local/lib
永久解决:修改工作目录下的.bashrc隐藏文件,此处以树莓派为例
vi /home/pi/.bashrc //打开.bashrc隐藏文件
export LD_LIBRARY_PATH=/usr/local/lib //将环境变量加到文件末尾
source .bashrc //令文件生效
sudo reboot //重启树莓派即可
也可输入以下命令
echo "export LD_LIBRARY_PATH=/usr/local/lib" >> ~/.bashrc //相当上面的前两行代码,不用vi打开文件,后续命令和上述一样
完成上述一系列操作后,可以输入以下命令查看是否正常
pi@raspberrypi:~ $ openssl
OpenSSL> version
OpenSSL 1.1.1l 24 Aug 2021
OpenSSL> q
最终问题得到解决,编译代码也为出错.