目录
前言
因为开发需要用到Qt,本来想用Qt4,但是想想永远接触的是老的东西,将永远跟不上别人的脚步,所以直接从Qt5.6.2开始搭建整个开发环境。本来想用qt-opensource-linux-x86-5.5.1.run进行搭建的,但是bug很多,比较懒,直接用qt-opensource-linux-x64-5.6.2.run进行搭建。
Qt下载地址
Qt的下载地址老是忘记,特此记录下,下次就不需要满世界的搜网址了,博客本身也就是资源搜集器,都是为了提高效率!
Qt下载地址
Qt的Ubuntu版本安装过程
- qt-opensource-linux-x64-5.6.2.run
这个版本的安装直接Next就行。
Qt的ODROID版本交叉编译工程
- 下载qt-everywhere-opensource-src-5.6.2.tar.gz,并解压
tar -xvf qt-everywhere-opensource-src-5.6.2.tar.gz
- 修改qmake.conf
cd qt-everywhere-opensource-src-5.6.2
cp qtbase/mkspecs/linux-arm-gnueabi-g++ qtbase/mkspecs/linux-arm-gnueabihf-g++
vi linux-arm-gnueabihf-g++/qmake.conf
修改如下:
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# add by simon
QT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc
QMAKE_CXX = arm-linux-gnueabihf-g++
QMAKE_LINK = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)
主要需要修改的就是编译架构和编译器
之后,回到qt-everywhere-opensource-src-5.6.2目录下,创建autoConfigure.sh,并修改权限
touch autoConfigure.sh
chmod 0777 autoConfigure.sh
在autoConfigure.sh中输入:
./configure -prefix
/opt/qt5.6.2-odroid \
-opensource \
-confirm-license \
-debug \
-shared \
-accessibility \
-c++std c++11 \
-xplatform linux-arm-gnueabihf-g++ \
-qpa linuxfb \
-linuxfb \
-qreal float \
-pch \
-qt-zlib \
-qt-libjpeg \
-qt-libpng \
-no-sse2 \
-no-largefile \
-no-qml-debug \
-no-glib \
-no-gtkstyle \
-no-opengl \
-nomake tools \
-nomake examples \
-skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland
最后:./autoConfigure.sh,这里会提示安装商业版还是开源版,选择’o’;之后,输入”yes”表示同意开源协议。
注意:这里没有指定编译选项,以后做裁剪的时候继续补充。
- make
- make install
本篇博客参考QT5.7交叉编译安装到arm和qt-5.6.0 移植之qt源码编译
Qt编译选项解析
这一部分主要参考qt-5.6.0 移植之qt源码编译,因为正在编译Qt5.6.2,所以看看一些编译选项,方便后期的裁剪。
-debug-and-release:
Debug是调试版本,包含调试信息,所以容量比Release大很多,并且不会进行任何优化(优化会使调试复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件之外,还有一个.pdb文件,该文件记录了代码中断点的调试信息。
Release是发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的。Release模式下生成一个文件.exe或.dll
Debug和Release的不同在于编译选项的不同,我们可以修改这些选项,从而得到优化过的调试版本或者带跟踪语句的发布版本。
opensource:
编译和链接开源Qt版本,一般我们都使用开源的Qt版本
confirm-licenese:
自动确认是开源的还是商业的
-shared:
创建和使用动态Qt库,一般的话我们编译都是动态库,这样的话软件的大小不会太大
-accessibility:
易接近支持,因为不同版本的qt都做了一些相关的改动,一般选择默认以提高软件的可移植性。
-qml-debug和-no-qml-debug:
编译是否QML调试支持,一般选择-no-qml-debug
-qt-zlib和-system-zlib:
zlib库时系统的zlib,但是要选-qt-zlib,据说因为架构不同,必须要选
-mtdev和-no-mtdev:
mtdev支持,是触摸屏多点控制协议的支持。多要触摸屏要支持多点控制,就加上。
-no-syslog和-syslog:
输入日志支持,一般默认
-no-gif :
指定没有gif阅读功能,一般选上
-no-libpng和-qt-libpng,默认是-system-libpng:
一般指定-no-libpng或-qt-libpng
-no-libjpeg和-qt-libjpeg,默认是-system-libjpeg:
一般指定-no-libjpeg或-qt-libjpeg
-no-freetype和-qt-freetype,默认是-system-freetype:
一般指定-no-freetype或-qt-freetype
-no-harfbuzz和-qt-harfbuzz,默认是-system-harfbuzz:
一般指定-no-harfbuzz或-qt-harfbuzz
-no-openssl和-openssl和-openssl-linked,默认是-openssl:
一般指定-openssl
-no-libproxy和-libproxy:
一般指定-no-libproxy
-no-glib和glib:
一般指定-no-glib
-tslib和-no-tslib:
-tslib是触摸屏校准的一个功能
-no-linuxfb和-linuxfb -no-opengl和-opengl <api>:
一般指定-linuxfb,使用linuxfb默认已经忽略opengl,一般-no-opengl
-verbose, -v:
-v是指打印详细的信息关于每个配置程序
-make <part>和-nomake <part>:
选择要不要编译某些另外的模块,比如说libs,tools,examples
比如:-make examples -nomake tools -nomake tests
-skip <module>:
从这个构建中排除整个模块,比如:-skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland
-silent:
指定减少输出的信息,可以更容易的查找错误
-no-gtkstyle和-gtkstyle:
支持gtkstype GTK主题
总结:这些都是搬运qt-5.6.0 移植之qt源码编译中的内容,只是自己学习之后记录了部分,感谢大神分享!
其他
- 在实际的安装过程中会找不到对应的Ubuntu的文件,可以使用以下方式查找文件
也可以使用:
- whereis 文件名
特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来. - find / -name 文件名或文件夹名
特点:准确,但速度慢,消耗资源大,例如我想找到PHP.ini的准确位置,就需要用
find / -name php.ini - locate 文件名
强力推荐的方法,最快,最好的方法.
参考链接
- whereis 文件名
- 实际在启动Qt5.6.2的时候会出现如下错误:
/home/xxx/.config/Qtcreator/qtversion.xml : Permission denied
原因是我可能是我在root用户下安装的Qt5.6.2,而启动Qt5.6.2的时候是普通用户的权限,这时候就会出现这个问题。
解决方法:
修改/home/usrname/.config的权限:
chmod -R usrname:usrname /home/xxx/.config
这样普通用户也可以访问这个.config文件
解决方法参照askubuntu.com
总结
都是前人的东西,只是自己总结一遍,熟悉一遍,记录一遍,为了不重复造轮子!
3051



被折叠的 条评论
为什么被折叠?



