Ubuntu下Qt5.6.2开发环境搭建

来源:互联网 发布:今天公布的经济数据 编辑:程序博客网 时间:2024/06/05 16:39

目录

  • 目录
  • 前言
  • 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.2cp 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 <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的文件,可以使用以下方式查找文件
    也可以使用:
    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

总结

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