You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译OpenVAS源码时出现libgvm_util.so未定义MQTTClient相关符号的链接错误,求解决方案

解决OpenVAS编译时Paho MQTT符号未定义的问题

从你的报错信息和排查情况来看,问题的核心在于编译OpenVAS时,链接器无法正确找到并链接到你安装在/usr/local/lib的Paho MQTT C库——虽然你已经确认库文件和缺失的符号都存在,但CMake配置里并没有明确告诉链接器要使用这个库,或者链接器的搜索路径没包含/usr/local/lib。

下面是具体的解决思路和步骤:

1. 检查并修改CMakeLists.txt,明确链接Paho MQTT库

你的OpenVAS项目CMakeLists里没有任何针对Paho MQTT的查找或链接配置,这是导致链接失败的直接原因。你需要添加相关配置让CMake找到并链接该库:

方法1:使用find_package(推荐)

在主CMakeLists.txt的合适位置(比如add_subdirectory代码块之前)添加以下内容:

# 查找Paho MQTT的头文件和库文件
find_path(PAHO_MQTT_INCLUDE_DIR NAMES MQTTClient.h
          PATHS /usr/local/include)
find_library(PAHO_MQTT_C_LIB NAMES paho-mqtt3c
             PATHS /usr/local/lib)

# 确认找到库后,添加包含路径并为目标链接库
if(PAHO_MQTT_INCLUDE_DIR AND PAHO_MQTT_C_LIB)
    include_directories(${PAHO_MQTT_INCLUDE_DIR})
    # 为报错的目标(openvas-nasl-lint)添加链接依赖
    target_link_libraries(openvas-nasl-lint PRIVATE ${PAHO_MQTT_C_LIB})
    # 同时记得给其他依赖libgvm_util的目标也添加该链接,比如src目录下的编译目标
else()
    message(FATAL_ERROR "Paho MQTT C library not found! Please check your installation.")
endif()

方法2:手动指定链接库(快速测试)

如果find_package方式不好用,也可以直接在nasl目录下的CMakeLists中,为openvas-nasl-lint目标添加硬编码的库路径:

target_link_libraries(openvas-nasl-lint PRIVATE /usr/local/lib/libpaho-mqtt3c.so)

2. 确保链接器能搜索到/usr/local/lib路径

即使你指定了库,系统链接器默认可能不会搜索/usr/local/lib,可以通过以下方式解决:

临时方案(编译前设置环境变量)

在执行make前先运行以下命令:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH

永久方案(修改CMake配置)

在主CMakeLists.txt中添加:

# 添加/usr/local/lib到链接器的搜索路径
link_directories(/usr/local/lib)
# 配置程序安装后仍能找到该路径
set(CMAKE_INSTALL_RPATH "/usr/local/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

3. 重新执行CMake和编译

完成上述修改后,清理之前的编译缓存,重新配置并编译:

cd your-openvas-build-directory
rm -rf CMakeCache.txt CMakeFiles/
cmake ..
make

额外排查点

  • 检查libgvm_util.so的依赖:执行ldd /opt/gvm/lib/libgvm_util.so,查看它是否显示依赖libpaho-mqtt3c.so。如果没有,说明libgvm_util本身的编译也未链接Paho库,需要同步修改它的CMake配置。
  • 确认Paho版本兼容性:虽然你已经用nm确认符号存在,但可以检查OpenVAS文档中要求的Paho版本,确保你安装的版本符合要求。

内容的提问来源于stack exchange,提问作者bluesky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 02:52:54