Ubuntu下Qt4编译方法

编译的环境:

Ubuntu16.04.7
GCC-4.9
Qt4.8.3
首先贴出Qt源码的下载地址https://download.qt.io/archive/qt/。这个网站相对国内的镜像站更全(镜像站似乎没有Qt4源码),但是缺点是比较慢,有梯子的话应该会更快。

下面就可以在本地计算机上进行编译相关的操作了,在这里我将下载好的源码放在$HOME/Downloads路径下。大家可以根据自己的实际情况进行相关的修改。

解压源码压缩包

这里可以使用系统自带的GUI解压工具解压,也可以在终端中使用命令解压。终端中解压命令为:

tar -zxvf qt-everywhere-opensource-src-4.8.3.tar.gz
cd qt-everywhere-opensource-src-4.8.3
1
2
解压后,使用cd命令进入解压后的路径,后续的主要操作都在这个目录下进行。

安装依赖项

这里需要安装的依赖项很多。如果有模块不需要安装,则可以不安装相关依赖。不过这里推荐全部安装,万一以后会用到呢。

sudo apt install -y gcc-4.9 g+±4.9 make cmake gdb build-essential
sudo apt install -y libx-dev libxext-dev libxtst-dev
sudo apt install -y openssl libssl-dev
sudo apt install -y g+±multilib zlib1g-dev autoconf automake libtool
sudo apt install -y libgl1-mesa-dev libglu1-mesa-dev
sudo apt install -y libglib2.0-dev
sudo apt install -y xorg-dev gperf bison flex sqlite
sudo apt install -y libxrender-dev libxrandr-dev libedbus-dev libdbus-1-dev
sudo apt install -y libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libalsa-ocaml-dev
sudo apt install -y libxt-dev subversion libsqlite3-dev libpng12-dev

64位机器

sudo apt install -y lib32ncurses5 lib32z1

32位机器

sudo apt install -y libx32ncurses5 libx32z1

修改相关文件

这里是Qt能否编译成功的关键所在。主要有3个地方需要修改,我将一一说明。

将系统默认的GCC/G++命令链接到刚刚安装的4.9版本的GCC中。需要这一步的原因是,GCC5以上的GCC是始终无法打开WebKit编译选项的,所以如果需要WebKit就需要更换到4.9版本的GCC。

建立gcc和g++的软链接

sudo ln -sf /usr/bin/gcc-4.9 /usr/bin/gcc
sudo ln -sf /usr/bin/g+±4.9 /usr/bin/g++
1
2
3
将GCC的C++编译版本调整为C++98标准。默认情况下,编译器似乎是启用了C++11标准,将会出现很多奇怪的错误,例如narrowing conversion相关的错误。这里需要修改两个文件的CXX_FLAGS。

mkspecs/common/g+±base.conf 第18行

QMAKE_CXX = g++ 改为 QMAKE_CXX = g++ -std=gnu++98

mkspecs/common/gcc-base.conf 第45行

QMAKE_CXXFLAGS += Q M A K E C F L A G S 改 为 Q M A K E C X X F L A G S + = QMAKE_CFLAGS 改为 QMAKE_CXXFLAGS += QMAKECFLAGSQMAKECXXFLAGS+=QMAKE_CFLAGS -std=gnu++98
1
2
3
4
修改JavaScriptCore.pri文件中的内容,这个文件和WebKit编译相关,修改之后WebKit才能编译通过。具体的链接在这里,这是WebKit的一个bug。

sed -i -e ‘/CONFIG\s*+=\stext_breaking_with_icu/ s:^#\s::’
src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri
1
2
到这里,编译Qt4最关键的部分就完成了。

编译相关

Qt在默认情况下编译的是动态链接库,也可以通过添加-static选项编译静态库,但是编译静态库是无法启用WebKit的。(我也尝试编译了静态库,死在了最终链接的时候)

编译的流程是先通过configure生成Makefile文件,然后使用make编译,最终install。具体命令如下:

./configure -opensource -nomake demos -nomake examples -nomake tests -silent -webkit
make -j4
sudo make install
1
2
3
其中,-nomake选项关闭了Qt例子和测试,这样可以节省编译的时间,有需要的可以打开。

我使用的编译平台是:Intel Core i3-2350M+DDR3-1333MHz 6GB,编译全程耗时大概40分钟左右。如果你的机器更好可以更改make -j4后面的数字。默认情况下,安装路径为:/usr/loca/Trolltech/Qt-4.8.3。如果需要自定义的话,可以在configure的时候使用-prefix选项进行修改,这里我使用的是默认安装路径。

添加环境变量

在编译安装完成后,我们在终端中输入qmake,会发现仍未找到相关命令或者并不是我们需要的4.8.3版本。这是因为还需要在系统中添加环境变量才可以使我们自行安装的Qt生效。这里我选择的是更改 H O M E / . b a s h r c 文 件 。 这 个 文 件 是 当 前 账 户 b a s h 环 境 的 环 境 变 量 控 制 文 件 , 使 用 z s h 的 在 HOME/.bashrc文件。这个文件是当前账户bash环境的环境变量控制文件,使用zsh的在 HOME/.bashrcbash使zshHOME/.zshrc文件中进行相关修改即可。

在环境变量文件的最后添加下面四行:

export PATH="/usr/loca/Trolltech/Qt-4.8.3/bin: P A T H " e x p o r t L D L I B R A R Y P A T H = " / u s r / l o c a / T r o l l t e c h / Q t − 4.8.3 / l i b : PATH" export LD_LIBRARY_PATH="/usr/loca/Trolltech/Qt-4.8.3/lib: PATH"exportLDLIBRARYPATH="/usr/loca/Trolltech/Qt4.8.3/lib:LD_LIBRARY_PATH"
export MANPATH="/usr/loca/Trolltech/Qt-4.8.3/man: M A N P A T H " e x p o r t P K G C O N F I G P A T H = " / u s r / l o c a / T r o l l t e c h / Q t − 4.8.3 / l i b / p k g c o n f i g : MANPATH" export PKG_CONFIG_PATH="/usr/loca/Trolltech/Qt-4.8.3/lib/pkgconfig: MANPATH"exportPKGCONFIGPATH="/usr/loca/Trolltech/Qt4.8.3/lib/pkgconfig:PKG_CONFIG_PATH"
1
2
3
4
稍微解释下每一个变量是干什么的:PATH主要负责可执行路径,LD_LIBRARY_PATH负责库文件,MANPATH负责终端文档,PKG_CONFIG_PATH负责pkgconfig文件配置。

总结

到这里,整个Qt4.8.3编译安装配置都完成了。其实看上去也没啥工作量,但是一开始尝试编译的时候各种报错还是挺难受的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值