Ubuntu下Qt5.6.2开发环境搭建

目录

  • 目录
  • 前言
  • Qt下载地址
  • Qt的Ubuntu版本安装过程
  • Qt的ODROID版本交叉编译工程
  • Qt编译选项解析
  • 其他
  • 总结

前言

因为开发需要用到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-glibglib
一般指定-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源码编译中的内容,只是自己学习之后记录了部分,感谢大神分享!

其他

  • 在实际的安装过程中会找不到对应的Ubuntu的文件,可以使用以下方式查找文件
    也可以使用:
    1. whereis 文件名
      特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.
    2. find / -name 文件名或文件夹名
      特点:准确,但速度慢,消耗资源大,例如我想找到PHP.ini的准确位置,就需要用
      find / -name php.ini
    3. locate 文件名
      强力推荐的方法,最快,最好的方法.
      参考链接
  • 实际在启动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

总结

都是前人的东西,只是自己总结一遍,熟悉一遍,记录一遍,为了不重复造轮子!

你可能感兴趣的:(qt)