问题背景
今天,编译mosquitto的时候报错了,提示:
root@inspur001:/userdata/testKYAI/mosquitto/mosquitto-1.6.10#
root@inspur001:/userdata/testKYAI/mosquitto/mosquitto-1.6.10# make
set -e; for d in lib client src; do make -C ${d}; done
make[1]: Entering directory '/userdata/testKYAI/mosquitto/mosquitto-1.6.10/lib'
cc -I. -I.. -I../lib -I../src/deps -DWITH_TLS -DWITH_TLS_PSK -DWITH_THREADING -DWITH_SOCKS -Wall -ggdb -O2 -fPIC -c mosquitto.c -o mosquitto.o
In file included from mosquitto.c:17:
../config.h:48:12: fatal error: openssl/opensslconf.h: No such file or directory
48 | # include <openssl/opensslconf.h>
| ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:101: mosquitto.o] Error 1
make[1]: Leaving directory '/userdata/testKYAI/mosquitto/mosquitto-1.6.10/lib'
make: *** [Makefile:59: mosquitto] Error 2
root@inspur001:/userdata/testKYAI/mosquitto/mosquitto-1.6.10#
原因
缺少 OpenSSL 的头文件,需要安装 OpenSSL 的开发包
解决办法
执行命令后,从 Ubuntu 软件源中下载并安装 OpenSSL 的开发包
sudo apt update
sudo apt install libssl-dev
如果安装成功,应该能够在 “/usr/include/openssl
” 目录下找到 “opensslconf.h
” 文件。
我的在这个地方:
/usr/include/x86_64-linux-gnu/openssl/opensslconf.h
如果问题仍然存在,需要检查编译命令是否正确指定了 OpenSSL 库和头文件的位置。例如,在使用 gcc 编译器时,需要使用以下选项:
gcc -o myapp myapp.c -lssl -lcrypto
其中,“-lssl
” 和 “-lcrypto
” 选项分别指定 OpenSSL 库的名称
参考文章:篇8:fatal error:openssl/opensslconf.h:No such file or directory