因为开发需要用到Qt,本来想用Qt4,但是想想永远接触的是老的东西,将永远跟不上别人的脚步,所以直接从Qt5.6.2开始搭建整个开发环境。本来想用qt-opensource-linux-x86-5.5.1.run进行搭建的,但是bug很多,比较懒,直接用qt-opensource-linux-x64-5.6.2.run进行搭建。
Qt的下载地址老是忘记,特此记录下,下次就不需要满世界的搜网址了,博客本身也就是资源搜集器,都是为了提高效率!
Qt下载地址
Next
就行。tar -xvf qt-everywhere-opensource-src-5.6.2.tar.gz
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”表示同意开源协议。
注意:这里没有指定编译选项,以后做裁剪的时候继续补充。
本篇博客参考QT5.7交叉编译安装到arm和qt-5.6.0 移植之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
:
一般指定-linuxfb
,使用linuxfb默认已经忽略opengl,一般-no-opengl
-verbose, -v
:
-v是指打印详细的信息关于每个配置程序
-make
和-nomake
:
选择要不要编译某些另外的模块,比如说libs,tools,examples
比如:-make examples -nomake tools -nomake tests
-skip
:
从这个构建中排除整个模块,比如:-skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland
-silent
:
指定减少输出的信息,可以更容易的查找错误
-no-gtkstyle
和-gtkstyle
:
支持gtkstype GTK主题
总结:这些都是搬运qt-5.6.0 移植之qt源码编译中的内容,只是自己学习之后记录了部分,感谢大神分享!
find / -name php.ini
/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
都是前人的东西,只是自己总结一遍,熟悉一遍,记录一遍,为了不重复造轮子!