Ubuntu 16.04编译Wireshark遇Qt头文件未定义引用问题求助
在Ubuntu 16.04编译Wireshark时解决Qt头文件"Undefined reference"错误
我之前在老版本Ubuntu上编译Wireshark也碰到过类似的Qt链接问题,给你梳理下解决方案:
1. Qt头文件路径的定义位置
当你运行configure后,它会生成项目的Makefile文件,里面的CPPFLAGS(部分项目会用INCLUDES)变量会包含Qt头文件的路径,比如:
CPPFLAGS = -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets ...
同时,LIBS变量会指定链接Qt库的路径和库名:
LIBS = -L/usr/lib/x86_64-linux-gnu -lQt5Widgets -lQt5Gui ...
另外,你也可以在运行configure时主动指定Qt的安装前缀——如果Qt是手动安装而非系统默认路径,用这个参数能让configure精准定位:
./configure --with-qt=/path/to/your/qt/installation
2. 能否修改路径?
完全可以,两种方式任选:
- 直接修改Makefile:找到上面提到的
CPPFLAGS和LIBS变量,把正确的Qt头文件路径(比如-I/your/correct/qt/include)和库路径(-L/your/correct/qt/lib)补充进去,保存后重新运行make。 - 重新运行configure:先删掉生成的Makefile和配置缓存(
rm Makefile config.cache),然后带上--with-qt参数重新执行./configure,让它重新检测并生成正确的路径配置。
3. 修改后能否解决问题?
如果你的"Undefined reference"错误确实是因为Qt头文件/库的路径没被正确识别(比如系统装了多个Qt版本导致configure选了错误的,或者Qt开发包路径未被包含),修改路径后大概率能解决问题。
不过还要额外注意几个点:
- 确保你已经安装了Ubuntu 16.04上Qt5的开发包,运行
sudo apt-get install qtbase5-dev qttools5-dev-tools可以安装基础的Qt5开发依赖,这是编译Wireshark Qt界面的前提。 - 检查Qt版本是否符合Wireshark要求:Ubuntu16.04默认的Qt5版本是5.5.x,要确认你编译的Wireshark版本支持这个Qt版本(Wireshark 2.x系列是兼容的)。
- 注意:"Undefined reference"通常是链接阶段的库缺失问题,而非头文件找不到(头文件找不到会提示"no such file or directory"),所以重点要检查
LIBS变量里是否包含了-lQt5Core -lQt5Widgets这类必要的Qt库。
内容的提问来源于stack exchange,提问作者Victor2Preston
相关产品推荐
相关产品推荐

