系统环境:Centos7
git clone https://github.com/eclipse/paho.mqtt.c.git
cd paho.mqtt.c
make
make install
在执行make阶段出现了错误:
build/output/libpaho-mqtt3cs.so:对‘OPENSSL_init_ssl’未定义的引用
build/output/libpaho-mqtt3cs.so:对‘OpenSSL_version’未定义的引用
build/output/libpaho-mqtt3cs.so:对‘OPENSSL_init_crypto’未定义的引用
build/output/libpaho-mqtt3cs.so:对‘TLS_client_method’未定义的引用
collect2: 错误:ld 返回 1
解决方法:安装openssl-1.1.1d版本
查看Openssl版本:openssl version
centos7默认提供的openssl版本是1.0.2的
1、下载openssl
cd /usr/local/src/ wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -zxvf openssl-1.1.1d.tar.gz
2、编译openssl
cd openssl-1.1.1d ./config make && make install
3、配置
注意:默认编译后,查看当前openssl版本号时,你会发现还是1.0.2,所以这里需要做一些额外的配置工作
echo "/usr/local/lib64/" >> /etc/ld.so.conf ldconfig mv /usr/bin/openssl /usr/bin/openssl.old ln -sv /usr/local/bin/openssl /usr/bin/openssl
4、验证openssl version
安装完成后 重新执行:
make clean
make
make install
如果还是失败,需要编辑Makefile文件再进行编译
在文件中加入:
CFLAGS += -I/opt/openssl/1.1.1d/include # openssl编译的include文件夹
LDFLAGS += -L/opt/openssl/1.1.1d/lib # openssl编译的lib库文件夹,make的时候生成一般在build文件夹下
执行make install后,会在/usr/local/lib目录下生成动态库文件