Ubuntu环境下Wt编译链接出现未定义引用错误求助
解决Wt编译时的"undefined reference"错误
你的问题核心出在错误的库搜索路径上,咱们一步步拆解解决:
1. 定位关键问题:无效的链接路径
你编译命令里的 -L/usr/lib/lib 是错误的——从你用find查到的结果能看到,Wt的库文件(比如libwthttp.so、libwt.so)都直接放在 /usr/lib 目录下,而非/usr/lib/lib。这个错误路径会让编译器找不到正确的库,要么误链接到不匹配的旧库,要么直接找不到需要的符号,最终抛出未定义引用的错误。
2. 修正编译命令
只需要去掉错误的-L/usr/lib/lib(或者改成-L/usr/lib,不过/usr/lib是系统默认的库搜索路径,编译器会自动扫描这里,完全可以省略这个参数)。修正后的命令如下:
g++ -std=c++14 -o hello HelloW.cpp -I./src -lwthttp -lwt
3. 额外排查步骤(如果修正后仍报错)
如果还是出现相同错误,可以做以下检查:
- 确认库中存在缺失的符号:用
nm命令检查libwt.so里是否包含那个Connection析构函数:
如果输出能看到这个符号,说明库本身没问题,还是链接路径相关的问题;如果没有输出,可能是Wt库安装不完整,建议重新安装开发包:nm -D /usr/lib/libwt.so | grep "Wt::Signals::Impl::Connection::~Connection"sudo apt-get reinstall witty-dev - 检查代码与库版本匹配:你安装的是Wt 3.3.4版本(从
libwthttp.so.3.3.4可看出),确认你的HelloW.cpp代码是基于Wt 3.x版本编写的,没有使用Wt 4.x的API(4.x版本的库命名通常是libwt4,和当前安装的包不兼容)。
内容的提问来源于stack exchange,提问作者jimifiki
相关产品推荐
相关产品推荐

