注:以下内容为Zhao Shuai 更新整理
为什么要编译QT?通过atp-get install 可安装 5.2.1,如果没有更高Qt版本的需求,这一步操作以及下一步操作可以跳过。如果需要更高版本的QT,而QT官方没有提供ARM版本,所以只能自己编译。本教程是整理的QT5.5.1的编译安装过程。
1.下载QT5.5.1资源文件:
qt-everywhere-opensource-src-5.5.1.tar.gz
可在以下网址获取:
http://download.qt.io/official_releases/qt/5.5/5.5.1/single/qt-everywhere-opensource-src-5.5.1.tar.gz
建议:将压缩包保存到sd卡上,并且之后的编译过程在sd卡上进行,因为编译好的QT,是可以重复使用的,编译一次QT会花费大量的时间。一次编译,如果下次TK1开发板挂掉后,就可以插上sd卡直接安装QT,不需要再次的编译,后面的QT Creator也是相同的道理,还有前面教程中下载的资源也可以备份到sd卡,为下一次的刷机,或者刷多个机子,可以节省大量时间。切记,如果你采取我的建议,务必将sd卡,右键格式化为Linux分区(即ext3, ext4 ...),sd卡重命名一个恰当的名字,如果想复用编译好的QT,编译好QT后千万不要修改sd卡的名字,因为与编译的路径有关。
2. 解压文件:
cd到下载的资源文件目录下,(如果存储到了sd卡下,则cd /media/ubuntu/(sd卡的名字))。在终端执行命令:
tar -zxvf qt-everywhere-opensource-src-5.5.1.tar.gz
3. 先不要着急编译,有几个坑需要填:
1). 创建以下环境变量:
终端命令:vi ~/.bashrc
打开文件并在末尾添加如下代码:
export SYSROOT
export PKG_CONFIG_SYSROOT_DIR=/
exportPKG_CONFIG_LIBDIR=$SYSROOT/usr/lib/arm-linux-gnueabihf/pkgconfig:$SYSROOT/usr/share/pkgconfig:$SYSROOT/usr/lib/pkgconfig
exportPKG_CONFIG_PATH=$SYSROOT/usr/lib/arm-linux-gnueabihf/pkgconfig:$SYSROOT/usr/share/pkgconfig:$SYSROOT/usr/lib/pkgconfig
保存文件,并在终端执行命令:source~/.bashrc
2). cd到qt-everywhere-opensource-src-5.5.1文件夹,vi打开并修改文件qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,将全文替换如下,切记是将全文替换:
########################################################
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2-march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = gcc
QMAKE_CXX = g++
QMAKE_LINK = g++
QMAKE_LINK_SHLIB = g++
# modifications to linux.conf
QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
QMAKE_NM = nm -P
QMAKE_STRIP = strip
load(qt_config)
################################################
3). 打开qt-everywhere-opensource-src-5.5.1文件夹下的 qt.pro, 你会发下许多addModule(......),注释掉 qtcanvas3d, qt3d, qtconnectivity, qtwayland 这几个模块,即用#注释掉含有如上字段的addModule(......) 。
4). 如果要使用摄像头,视频播放等多媒体功能,一定要安装好gstreamer/libgstreamer,可通过apt-get安装。
在终端中执行命令:sudo apt-get install gstreamer1.0
5). 在终端中执行命令:
./configure -release -opensource -xplatform linux-arm-gnueabi-g++-prefix /opt/qt551 -no-c++11 -qt-zlib -qt-xcb
注释:/opt/qt551 为配置qt的安装目录,可自己设定。-qt-zlib 及 -qt-xcb是将第三方库编译到QT中,本教程只选取了zlib和xcb库,建议事先确定日后是否需要其他第三方库,避免日后因为缺少库,而重新编译QT,这是很痛苦的事情。
如下是节选的QT官方文档:
Third-Party Libraries
TheQt source packages include third-party libraries. To set whether Qt should usethe system's versions of the libraries or to use the bundled version, passeither -system or -qtbefore the name of the library to configure.
Thetable below summarizes the third-party options:
Library Name |
Bundled in Qt |
Installed in System |
zlib |
-qt-zlib |
-system-zlib |
libjpeg |
-qt-libjpeg |
-system-libjpeg |
libpng |
-qt-libpng |
-system-libpng |
xcb |
-qt-xcb |
-system-xcb |
xkbcommon |
-qt-xkbcommon |
-system-xkbcommon |
freetype |
-qt-freetype |
-system-freetype |
PCRE |
-qt-pcre |
-system-pcre |
HarfBuzz-NG |
-qt-harfbuzz |
-system-harfbuzz |
4. 编译安装:
在终端中执行命令:make
这需要一段时间。如果编译成功,则可以进行下面的安装步骤。
这里再说一句,如果你选择了在SD卡里进行了上面的操作,那么恭喜你,如果下次再需要安装QT,上面的编译QT的过程这可以全部跳过,只需要cd到该目录,执行下面的安装。
在终端中执行命令:sudo make install
经过漫长的等待,Qt编译成功。可以cd 到/opt/qt551(本教程的安装目录)查看确定一下。
5. 配置环境变量:
在终端中执行命令: vi ~/.bashrc 打开文件,在文件尾部添加如下:
export PATH=/opt/qt551/bin:$PATH
export LD_LIBRARY_PATH=/opt/qt551/lib:$LD_LIBRARY_PATH
切记:/opt/qt551是本教程安装的目录,如果你自定了自己的安装目录,请做相应修改。注:请将路径放在$PATH和$LD_LIBRARY_PATH前面,这样确保系统先找到qt5.5.1的库,因为系统自带了低版本的qt。
保存文件退出。
在终端执行命令:source ~/.bashrc
6.验证qt是否安装成功:
终端执行命令qmake -version
如果QT的version为5.5.1,则安装成功。