linux源码编译qt6.5问题解决
创始人
2024-11-11 06:10:57
0次

Qt编译版本问题

在编译一个项目时,发现ubuntu22 apt方式安装的默认时qt6.2。但是项目要求6.4,为了安装简单,升级ubuntu到了24,直接一键安装qt6.4.2。
开始编译了,一切正常进行中,突然报错,

#include  

找不到QtLogging头文件,一番查阅发现ubuntu 发布的qt6.4.2小版本不包括这个,小版本等级太低。
所以,只能通过源码编译了。

Qt源码编译

configure配置llvm问题解决

参考官方教程:
https://doc.qt.io/qt-6/linux-building.html,直接下个qt6.5试试。

mkdir -p ~/dev/qt-build cd ~/dev/qt-build /tmp/qt-everywhere-src-6.7.2/configure 

这里遇到一个问题,报错libclangBasic.a找不到,网上说安装libclang-dev就可以了。

sudo apt install libclang-dev 

然后发现还是找不到,怎么办…
我直接在/usr/lib/下找到了三个目录,llvm-14、llvm-15、llvm-18,搜索发现只有18目录下面有这个.a文件,所以设置下面的环境变量:

export LLVM_INSTALL_DIR=/usr/lib/llvm-18/ 

configure一键打通,完成。

build过程依赖缺失解决

现在开始build,又报错了…

cmake --build . --parallel cmake --install . 
/usr/bin/ld: qtbase/src/corelib/CMakeFiles/Core.dir/text/qstringconverter.cpp.o: in function `QStringConverterBase::State::reset()': qstringconverter.cpp:(.text+0x3567): undefined reference to `ucnv_reset_73' /usr/bin/ld: qtbase/src/corelib/CMakeFiles/Core.dir/text/qstringconverter.cpp.o: in function `QStringConverter::QStringConverter(char const*, QFlags)': qstringconverter.cpp:(.text+0x37d8): undefined reference to `ucnv_open_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x381d): undefined reference to `ucnv_setToUCallBack_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x3837): undefined reference to `ucnv_setFromUCallBack_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x3850): undefined reference to `ucnv_getName_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x3867): undefined reference to `ucnv_getStandardName_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x3890): undefined reference to `ucnv_getMaxCharSize_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x38eb): undefined reference to `ucnv_setToUCallBack_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x3905): undefined reference to `ucnv_setFromUCallBack_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x3928): undefined reference to `ucnv_getStandardName_73' /usr/bin/ld: qstringconverter.cpp:(.text+0x393c): undefined reference to `ucnv_close_73' 

网上说是anaconda环境base和本机冲突了,我直接deactiva anaconda base环境。发现没有解决。

which conda mv /home/xxx/miniconda3 /home/xxx/miniconda3_back 

然后编译,这个报错就解决了。

遇到下一个报错:

 error: ‘XKB_KEY_dead_lowline’ was not declared in this scope; did you mean ‘XKB_KEY_dead_belowring’? 

这是qt的一个bug,https://bugreports.qt.io/browse/QTBUG-117950
安装网址上,我下载的6.5.0没有修复,我直接下载6.6.3吧。

Fix Version/s: 5.15.16, 6.2.11, 6.5.4, 6.6.1, 6.7.0 FF 

我们configure的时候skip一些内容快一些:

sudo apt install gperf bison flex libvulkan-dev configure -prefix /usr/local -opensource -release -sysconfdir /etc/xdg -openssl -no-eglfs  -make libs -skip qtandroidextras -skip qtmacextras -skip qtwinextras -skip qtcanvas3d -skip qt3d -skip qtgraphicaleffects -skip qtpurchasing -confirm-license  

就可以成功编译安装了。

Qtwayland

我的项目需要QtWayland,https://stackoverflow.com/questions/42352743/how-to-build-qtwayland。

configure -feature-wayland-server 

QtWebEngine

QtWebEngine won't be built. Build requires nss >= 3.26. 
sudo apt-get install --reinstall libnss3-dev libnss3 libdrm-dev libcpuset-dev 

Qtpdf模块编译会报错,如果不需要这个模块,不编译QtWebEngine。
https://bugreports.qt.io/browse/QTBUG-113642

sudo apt install libcups2-dev 

然后会编译chromium,太慢了。直接在下面的链接找deb下载安装吧。
https://rsync.truman.edu/debian/pool/main/q/qt6-webengine/

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...