Qt 6.2 源码构建 (动态库和静态库)
Qt 6.2.0 源码构建,win10、ubuntu、Mac平台下的动态库版本、静态库版本.
一、 源码下载
下载方式:
-
通过Qt在线安装包安装qt时勾选Sources,源码会下载安装目录的
Src
文件夹. -
从我的网盘里下载,下载后
tar -jxf 6.2.0.bz2
解压.
二、configure
1. ubuntu / Mac
动态库:
./configure -release -opensource -confirm-license -prefix /home/Qt/6.2.0/shared/
静态库:
./configure -release -static -opensource -confirm-license -prefix /home/Qt/6.2.0/static/
2. windows
在源码路径导航栏输入cmd
,打开windows终端,
动态库:
configure -release -opensource -confirm-license -platform win32-g++ -prefix "D:\shared"
静态库:
configure -release -static -opensource -confirm-license -platform win32-g++ -prefix "D:\static"
-prefix
后面为make install
的目标路径,后面qtcreator选择qt版本时会用到这个路径.
更详细的配置选项见官方文档:
Qt Configure Options.
我在这几个平台构建时,只使用了必要的选项,导致编译了不必要的模块,如果对Qt比较熟悉、对自己所在项目中使用的Qt模块比较熟悉的话,编译时可以禁用一些无关模块来加快速度。
三、 build
这一步所有平台(ubuntu\win10\mac
)的命令均一致.
通过如下命令开始漫长的编译之旅:
make -j8
-j
后面数字最好跟cpu的核心数保持一致,这样既可以拉满cpu,也不至于内存爆掉,不要使用cmake --build . --parallel
来编译,它会开启远超cpu核心数的线程数来编译,会有内存爆掉的风险,导致coredump
,我第一次编译时就使用了该命令,直接导致内存100%,先是挤挂了我一个跑了一周的大型程序,然后自己coredump
挂掉…
成功构建后,安装到-prefix
指定的路径:
make install
期间可能会遇到一些报错,错误信息复制到谷歌一般都能找到答案.
四、 windows环境配置
windows平台的编译,我使用 mingw64
工具链来编译.
1、mingw64
环境配置
下载包:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
无需安装,解压即可,解压后bin
目录加入到系统环境变量。为了和linux
下保持一样的使用体验,我把mingw32-make.exe
复制了一份,重命名为make.exe
,这样mingw32-make和make命令均可以使用.
2、cmake
下载安装包: cmake-3.21.3-windows-x86_64.msi,
安装完毕后,cmake.exe所在路径 加入系统环境变量.
3、perl/ruby/python
ActivePerl-5.28.1.0000-MSWin32-x64-118a97f8.msi
rubyinstaller-devkit-3.0.2-1-x64.exe
这三个工具无需手动添加环境变量,安装时注意勾选添加到环境变量。
以上工具也可直接从我网盘里直接获取.
安装结束后,重启电脑 – > configure – > make – > make install
五、qtcreator
编译好库之后,安装qtcreator
,在qtcreator
里面配置qt
版本。
简单起见我都是直接下载编译好的二进制,解压即可。
下载地址:
https://github.com/qt-creator/qt-creator/releases
六、 问题解决日志
1 . ubuntuconfigure
失败,提示cmake版本过低.
sudo pip install cmake --upgrade
2 . 编译ubuntu动态库版本时,报错:
qvkgen: error while loading shared libraries: libQt6Core.so.6: cannot open shared object file: No such file or directory
运行从GitHub下载编译好的Linux版本的qtcreator时,也会有类似错误:
ww@DESKTOP-KBKJ5NU:~/qt/bin$ ls
qt.conf qtcreator qtcreator.sh
ww@DESKTOP-KBKJ5NU:~/qt/bin$ ./qtcreator
./qtcreator: error while loading shared libraries: libQt6Core.so.6: cannot open shared object file: No such file or directory
最后通过google找到解决方案:
sudo strip --remove-section=.note.ABI-tag /path_to/libQt6Core.so.6.2.0
3 . ubuntu安装完QtCreator后启动失败.
export QT_DEBUG_PLUGINS=1
之后再次启动QtCreator看到详细输出日志,显示某某动态库加载失败,然后按提示安装了以下库.
sudo apt install libxkbcommon-dev libxkbcommon-x11-dev libxcb-render-util0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-icccm4-dev
七、二进制
我把各平台下编译的静态库、动态库上传到了百度云盘,附带编译使用的源码、工具包.
链接:https://pan.baidu.com/s/13wm8HxQKdc2mFu7Ze_yooQ
提取码:a6fy
configure.bat -release -static -opensource -confirm-license -prefix "D:/qt6.6.0/vs_release_static"
configure.bat -debug -static -opensource -confirm-license -prefix "D:/qt6.6.0/vs_debug_static"
打开 vs 命令行工具 x64 Native Tools Command Prompt for VS 2022
下载地址
https://download.qt.io/archive/qt/6.6/6.6.0/single/
在 D:\qt_src\qt-everywhere-src-6.6.0\qtbase\src\corelib\global\qconfig.cpp 中更改安装路径为 ..