Linux源码编译QT和QTCreator

Linux系统中QT安装

源码安装流程可参考:Linux对源码编译过程的探究之GCC&make&cmake

在线安装

这种安装方式需要一个qt账户,并且操作流程如下:首先是下载在线安装脚本,官方下载地址。一般在国外,可能会出现下载缓慢的问题(没啥感觉)。可以选用国内镜像,比如:中科大或者清华

一般地址中有两个文件,.run用于Linux系统,.dmg用于Mac系统,.exe用于Window系统。这里以ubuntu系统举例,使用中科大源下载运行脚本。

# 获取
wget http://mirrors.ustc.edu.cn/qtproject/official_releases/online_installers/qt-unified-linux-x64-online.run

# 分配执行权限
> chmod a+x qt-unified-linux-x64-online.run 

# 使用指定源安装,点击回车后就会出现安装界面
> ./qt-unified-linux-x64-online.run --mirror http://mirrors.ustc.edu.cn/qt/

在这里插入图片描述

然后根据提示一步一步操作就行,该方法必须应用于图形化界面的方式。

源码编译安装

同样也是先下载,去官网或者国内的中科大清华/official_releases/qt/下寻找源码文件,下载即可。

# 以的qt6华中科qt6.4.2为例
> wget http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/6.4/6.4.2/single/qt-everywhere-src-6.4.2.tar.xz

对于qt6.4而言,需要依赖很多版本的依赖库,这里列举在ubuntu22.04下编译成功所需要安装的依赖库软件。(需要空间1G多)

> sudo apt install bison build-essential clang flex gperf libatspi2.0-dev libbluetooth-dev libclang-dev libcups2-dev libdrm-dev libegl1-mesa-dev libfontconfig1-dev libfreetype6-dev libgstreamer1.0-dev libhunspell-dev libnss3-dev libopengl-dev libpulse-dev libssl-dev libts-dev libx11-dev libx11-xcb-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libxkbfile-dev libxrandr-dev libxrender-dev libxshmfence-dev libxshmfence1 llvm ninja-build nodejs python-is-python3 python2

进入源码的根目录,进行编译,并指定其安装目录(这里注意一下,尽量将编译过程的Cache文件放在一个单独文件夹中,否则如果后期编译失败后其缓存文件会导致二次编译的失败):

> mkdir build
> cd build
> ../configure -prefix /usr/local/qt6.4 # 指定安装路径,注意需要考虑一下权限问题,否则给普通用户指定root的权限路径,会导致后期安装的时候权限不够

这里有个问题,就是在安装完成后,用户目录下有*.prl文件,挺多的。不知道怎么指定放到其他目录下。
在构建过程中,可以看到源码文件是由很多个文件夹构成,比如qtbase文件夹,在qt源码文件中,qt是由多个模块共同组成的(也就是源码文件中的每个目录),如果是要最小安装qt,进入qtbase目录中找到对应的configure文件,执行编译以及安装,即可安装指定模块。
最小安装应该就是只安装qtbase模块即可,这个没有验证。而且这个有问题,如果全部安装的话,编译过程出现的源码与编译文件大小有30G的大小。因此得考虑存储空间的大小。当安装完成后,如果空间不足的话,尽量删除。不过编译过程需要很久,所以必须确定已经安装完成。

构建代码并且安装:

# 构建,这部分需要挺长时间的
cmake --build . --parellel

# 安装到 -prefix目录下
cmake --install .

如果想为Qt Assistant构建文档:
cmake --build . --target docs
cmake --build . --target install_docs
官方文档还提到了设置PATHLD_LIBRARY_PATH以便qt6.4bin里面的工具和lib里面的库文件能被检索到。这个在~/.bashrc里添加就行。

检测是否安装成功,查看安装目录下<qt安装目录>/bin/designer是否运行出界面。
在这里插入图片描述

出现问题

cmake版本太低(不一定有问题)

cmake版本太低了。虽然在ubuntu上使用了apt-get update命令,但是对应的ubuntu远程仓库里的cmake并不是最新版本。可以考虑使用新版本:

wget https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2.tar.gz
tar xf cmake-3.21.2.tar.gz
cd cmake-3.21.2
./configure
make
sudo make install

或者:不删除旧版本的cmake,而是将/usr/bin/cmake建立一个软链接,使用自己新安装的cmake,使用完成后再改回来(也可以直接使用绝对地址直接使用指定的cmake)。下载地址

> wget https://cmake.org/files/v3.26/cmake-3.26.0-rc5.tar.gz

> tar -zxvf cmake-3.26.0-rc5.tar.gz

> cd cmake-3.26.0-rc5

> ./configure --prefix=/usr/local/cmake3.26


> make -j8 # 使用8个线程来编译

> make install

> cd /usr/local/cmake3.26

# 为了保证使用的自己定义的cmake,需要使用软链接,先把旧版本的可执行文件复制一份,方便恢复
> sudo cp /usr/bin/cmake /usr/bin/cmake_old
> sudo ln -sf /usr/local/cmake3.26/bin/cmake  /usr/bin/cmake # 建立软链接

# 查看全局的环境是否改变
> cmake --version

Cmake error :generator: Ninja

这个问题的原因是之前编译过CMakeLists.txt后,产生了缓存文件CMakeCache.txt等,解决方案是删除对应的缓存文件。在编译过程中生成的文件有:CMakeCache.txtCMakeFiles/config.optconfig.summaryconfig.tests/;除此之外,每个单独的模块中也有一些缓存文件,需要删除干净,否则也会报错。

最好的办法就是在编译过程中,创建一个build文件夹,在build文件夹中执行configure(cmake)命令。

Linux系统中安装QTCreator

官网下载地址在qtcreator下载,找到对应的版本文件即可,在每个版本中都会有源码文件(qt-creator-opensource-src-9.0.2.zip,qt-creator-opensource-src-9.0.2.tar.gz)、在线安装软件(.dmg, .run, .exe) 。对于在线安装,也就是基于GUI界面的安装,在Linux中注意给运行权限x即可。这里主要是源码编译安装。

> wget https://download.qt.io/official_releases/qtcreator/9.0/9.0.2/qt-creator-opensource-src-9.0.2.tar.gz

# 解压
> tar -zxvf qt-creator-opensource-src-9.0.2.tar.gz

> cd qt-creator-opensource-src-9.0.2/
> mkdir build
> cd build
> cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/qt-creator
> make # 编译,需要挺久时间的。
> sudo make install # 安装

# 启动找到安装目录/usr/local/qt-creator
> ./bin/qtcreator

运行成功后出现目录:
在这里插入图片描述

为了能够在Terminal中命令行启动QtCreator。可以考虑在/usr/bin目录下创建一个qtcreator脚本文件,内容如下:其中,QT_HOME表示的是QT的安装目录

#!/bin/sh
export QT_HOME=/usr/local/qt-creator/bin
$QT_HOME/qtcreator $*

创建完成后需要给他执行权限:sudo chmod a+x /usr/bin/qtcreator

或者在/usr/bin下建立一个软链接。链接到对应的可执行文件。

# 注意这里的/usr/local/qt-creator/bin/qtcreator是我自己安装qtcreator的目录
sudo ln -sn /usr/local/qt-creator/bin/qtcreator /usr/bin/qtcreator

错误

./qtcreator: error while loading shared libraries: libQt6Core5Compat.so.6: cannot open shared object file: No such file or directory

出现着这种错误的原因是由于之前安装的QTlib库没有加入到环境变量中,因此使用不了
临时解决方案是将QTlib库临时加到环境变量中

# 最好是追加,并且,这个qt目录是自己安装的目录,别弄混了
> export LD_LIBRARY_PATH=/usr/local/qt6.4/lib:$LD_LIBRARY_PATH

为了让上述环境变量一直有用,可以添加到/etc/profile/etc/export~/.bashrc或者~/.bash_profile中。

当然也可以将该目录加入到共享库的配置文件中

# 注意这里的/usr/local/qt6.4是我安装qt的路径
> echo "/usr/local/qt6.4/lib" >> /etc/ld.so.conf
> ldconfig

搜索界面搜索不到qtcreator

为了能够在图形化界面中搜索qtcreator,需要一些配置。

通过源码编译安装解压二进制等形式安装的软件将无法在applications列表中被查找。如果想要达到查找应用这个目的,需要先弄清楚linux是如何管理应用程序的。观察一个特殊的目录:/usr/share/applications/。根据目录的名称可以得到很大的启示,share是共享的,表明这里的设置范围是系统级别的。

QT安装目录中/share/applications中包含了.desktop文件,内容如下:

[Desktop Entry]
Type=Application
Exec=qtcreator %F
Name=Qt Creator
GenericName=C++ IDE for developing Qt applications
X-KDE-StartupNotify=true
Icon=QtProject-qtcreator
StartupWMClass=qtcreator
Terminal=false
Categories=Development;IDE;Qt;
MimeType= text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;

将该desktop文件复制到/usr/share/applications中,并且修改其中内容,如下:

# 用程序启动的指令,可以带上参数运行
Exec=/usr/local/qt-creator/bin/qtcreator %F

# 图标
Icon=/usr/local/qt-creator/share/icons/hicolor/24x24/apps/QtProject-qtcreator.png

猜你喜欢

转载自blog.csdn.net/weixin_41012765/article/details/129405356