NotFoundError 2018-12-29 15:02 采纳率: 0%
浏览 618

docker安装mosquitto并编译mosquitto-auth-plug

编写dockerfile后,成功构建镜像,并且在镜像中成功编译了认证插件,但是启动该镜像的时候无法启动mosquitto,提示说无法加载auth-plug.so:Error relocating /mosquitto/src/mosquitto-auth-plug/auth-plug.so: mosquitto_client_id: symbol not found

请问有大神何解决方案?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 14:28
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于mosquitto的auth-plug.so文件在编译时没有正确地链接到mosquitto客户端ID。解决这个问题的方法如下:

    1. 首先,我们需要修改mosquitto源码中的AUTH_PLUG_CFLAGS宏定义,使其指向正确的库路径。

    2. 然后,我们可以在编译命令中添加-DMOSQUITTO_AUTH_PLUG=ON选项来指示mosquitto编译器使用我们的auth-plug.so文件。

    3. 最后,我们将重新构建和运行mosquitto镜像。

    下面是具体的步骤:

    1. 打开mosquitto源代码目录下的Makefile文件。

    2. 在AUTH_PLUG_CFLAGS宏定义前添加以下行:

      AUTH_PLUG_CFLAGS += -L/usr/local/lib -lmosquitto_auth_plug
      
    3. 编辑make.conf文件,将以下行添加到LIBS部分:

      LIBS = -lc++ -lm
      
    4. 将以下行添加到CXXFLAGS部分:

      CXXFLAGS += -D_MOSQUITTO_AUTH_PLUG=ON
      
    5. 运行make命令以重新构建mosquitto源码。

    6. 使用以下命令启动mosquitto服务:

      ./configure --with-openssl=/usr/local/ssl && make && sudo make install
      
    7. 最后,我们可以尝试启动mosquitto服务,应该会正常工作。

    以上就是解决mosquitto无法启动认证插件的问题的方法。希望对你有所帮助!

    评论

报告相同问题?