编写dockerfile后,成功构建镜像,并且在镜像中成功编译了认证插件,但是启动该镜像的时候无法启动mosquitto,提示说无法加载auth-plug.so:Error relocating /mosquitto/src/mosquitto-auth-plug/auth-plug.so: mosquitto_client_id: symbol not found
请问有大神何解决方案?
docker安装mosquitto并编译mosquitto-auth-plug
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-07 14:28关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是由于mosquitto的auth-plug.so文件在编译时没有正确地链接到mosquitto客户端ID。解决这个问题的方法如下:
-
首先,我们需要修改mosquitto源码中的AUTH_PLUG_CFLAGS宏定义,使其指向正确的库路径。
-
然后,我们可以在编译命令中添加-DMOSQUITTO_AUTH_PLUG=ON选项来指示mosquitto编译器使用我们的auth-plug.so文件。
-
最后,我们将重新构建和运行mosquitto镜像。
下面是具体的步骤:
-
打开mosquitto源代码目录下的Makefile文件。
-
在AUTH_PLUG_CFLAGS宏定义前添加以下行:
AUTH_PLUG_CFLAGS += -L/usr/local/lib -lmosquitto_auth_plug -
编辑make.conf文件,将以下行添加到LIBS部分:
LIBS = -lc++ -lm -
将以下行添加到CXXFLAGS部分:
CXXFLAGS += -D_MOSQUITTO_AUTH_PLUG=ON -
运行make命令以重新构建mosquitto源码。
-
使用以下命令启动mosquitto服务:
./configure --with-openssl=/usr/local/ssl && make && sudo make install -
最后,我们可以尝试启动mosquitto服务,应该会正常工作。
以上就是解决mosquitto无法启动认证插件的问题的方法。希望对你有所帮助!
解决 无用评论 打赏 举报-