想从事QT开发的人员,首先要做的第一件事就是开发环境的搭建。本人也是一位刚入门的新手,为了搭建这么一个环境,参考了很多的网上教程,然而中间依然走了不少弯路。现将过程记录下来。

一、开发环境
    CentOS 6.9_x64
    arm-linux-gcc-4.4.3.tgz
二、所需安装文件
    qt-everywhere-opensource-src-4.8.6.tar.gz
    qt-creator-opensource-linux-x86_64-4.0.3.run
    这两个文件可以从http://download.qt.io/网站的archive目录里获取。
三、按装qt-creator   
    这一步主要是安装qt的集成编辑环境,类似于windows下的UltraEdit的编辑软件,主要是为了编写代码用的,其安装步骤也比较简单。
    1. chmod +x qt-creator-opensource-linux-x86_64-4.0.3.run
    2. sudo ./qt-creator-opensource-linux-x86_64-4.0.3.run
    在接下来的图形安装界面一路采用默认配置即可,软件默认会被安装到/opt/qtcreator-4.0.3路径,同时在menu/application/programming菜单下创建qt creator快捷图标。

四、安装DeskTop类型的QT框架
    1. 进入到 qt-everywhere-opensource-src-4.8.6 目录下
    2. 如果之前的linux系统没有安装图型界面,则需要安装相应的库文件
        centos下安装:
            yum install libX11-devel
            yum install libXext-devel

ubuntu下安装:
            apt-get install libx11-dev
            apt-get install libxext-dev
    3. 运行配置脚本:
        ./configure
    4. make
        编译的过程会比较长,一般需要2~3小时,需耐心等待。
    5. 安装 make install
        默认安装到 /usr/local/Trolltech/Qt-4.8.6 目录下:
    6. 设置环境变量
        vi setenv.sh
        QTDIR=/usr/local/Trolltech/Qt-4.8.6
        QTCREATOR=/opt/qtcreator-4.0.3
        PATH=$QTDIR/bin:$QTCREATOR/bin:$PATH
        LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
    7. 运行Qt
        有两种方法运行Qt:
        <1>source setenv.sh之后在终端都可以用qmake,uic,designer,qtcreator等工具了.
        <2>双击Applications/Programming里的Qt Creator.
    8. 使环境变量永久有效
        编辑 /etc/profile 文件
        sudo vi /etc/profile
        在最后一行增加sh /senenv.sh路径/setenv.sh

五、安装ARM Embeded类型的QT框架
    1. 解压qt-everywhere-opensource-src-4.8.6.tar.gz
    2. 修改mkspecs/linux-arm-gnueabi-g++/qmake.conf文件,具体修改内容如下:
        --- qmake.conf.old      2014-04-11 02:37:12.000000000 +0800
        +++ qmake.conf  2019-04-16 12:56:47.435021259 +0800
        @@ -14,14 +14,14 @@
         include(../common/g++-unix.conf)
        
         # modifications to g++.conf
        -QMAKE_CC                = arm-linux-gnueabi-gcc
        -QMAKE_CXX               = arm-linux-gnueabi-g++
        -QMAKE_LINK              = arm-linux-gnueabi-g++
        -QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++
        +QMAKE_CC                = arm-linux-gcc
        +QMAKE_CXX               = arm-linux-g++
        +QMAKE_LINK              = arm-linux-g++
        +QMAKE_LINK_SHLIB        = arm-linux-g++
        
         # modifications to linux.conf
        -QMAKE_AR                = arm-linux-gnueabi-ar cqs
        -QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy
        -QMAKE_STRIP             = arm-linux-gnueabi-strip
        +QMAKE_AR                = arm-linux-ar cqs
        +QMAKE_OBJCOPY           = arm-linux-objcopy
        +QMAKE_STRIP             = arm-linux-strip
        
         load(qt_config)
    2. 创建config.sh配置脚本,或者将之前已有的脚本拷贝过来。
    -------------------config.sh start-------------------------------
        #!/bin/sh

export PATH=$PATH:/work/toolchain/4.4.3/bin/

./configure -prefix /usr/local/arm/qt-arm/QtEmbedded-4.6.2-arm9 \
        -opensource \
        -release -shared \
        -embedded arm \
        -xplatform qws/linux-arm-gnueabi-g++ \
        -depths 8,16,24 \
        -fast \
        -qt-sql-sqlite \
        -qt-zlib \
        -qt-freetype \
        -little-endian \
        -no-qt3support \
        -declarative \
        -scripttools \
        -javascript-jit \
        -no-svg \
        -no-audio-backend \
        -multimedia \
        -no-xmlpatterns \
        -script \
        -no-largefile \
        -qt-libjpeg \
        -qt-libtiff \
        -qt-libmng \
        -qt-libpng \
        -no-opengl \
        -no-iconv \
        -no-mmx -no-sse -no-sse2 \
        -no-3dnow \
        -no-sse3 \
        -no-ssse3 \
        -no-sse4.1 \
        -no-sse4.2 \
        -no-neon \
        -no-avx \
        -no-openssl \
        -no-webkit \
        -no-qvfb \
        -no-phonon \
        -no-nis \
        -no-cups \
        -no-glib \
        -no-separate-debug-info \
        -nomake examples -nomake tools -nomake docs
    -------------------config.sh end--------------------------------
    export PATH=$PATH:/work/toolchain/4.4.3/bin/
    交叉编译工具的路径,根据实修改
   
    -prefix /usr/local/arm/qt-arm/QtEmbedded-4.6.2-arm9 选项定义软件安装路径,可以根据实际情况去修改。
    3.执行config.sh脚本开始配置过程。
        如果在配置过过程中需要修改别的内容,可以用3
        make confclean 命令先清理之前生成的配置,然后再重新配置
    4.创建make.sh编译脚本
    -------------------make.sh start--------------------------------
        #!/bin/sh

export PATH=$PATH:/work/toolchain/4.4.3/bin/
        make
    -------------------make.sh end----------------------------------
    5.执行make.sh脚本开始漫长的编译过程。
    6.最后的安装步骤与DeskTop版本的按装骤步一样。

五、编译过程中可能遇到的错误及其解决方法

[编译qt-desktop时:]

错误: Package gstreamer-app-0.10 not found
安装:
    yum install gstreamer-plugins-base-devel

[编译qt-arm时:]
错误:/opt/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决办法:
    查询依赖关系
    yum whatprovides libstdc++.so.6
    安装库文件
    yum install libstdc++-4.4.7-11.el6.i686
    或者:yum -y install libstdc*

错误:/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3/../../../../arm-none-linux-gnueabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
解决办法:

查询依赖关系
    yum whatprovides libz.so.1
    安装库文件
    yum install zlib-1.2.3-29.el6.i686

当安装过程中出现文件冲突的解办法:
    rpm -q -a zlib*
    rpm -e zlib*
    yum whatprovides zlib*
    yum install zlib-1.2.3-29.el6.i686

错误:qtconcurrentiteratekernel.cpp:(.text+0x3c): undefined reference to `clock_gettime'
解决办法:
    修改:vim src/corelib/Makefile 加上-lrt
    LIBS          = $(SUBLIBS)  -L/opt/qt-everywhere-opensource-src-4.8.4/lib -lpthread -lm -ldl -lrt

基于CentOS-6.9_x64系统QT环境搭建的更多相关文章

  1. QT5.6.0 VS2013 Win764位系统QT环境搭建过程

    QT5.6.0 VS2013 Win764位系统QT环境搭建过程 没用过QT自己跟同事要了安装包,按照同事指导方法操作安装部署开发环境结果遇到好多问题,错误网上搜遍了所有帖子也没有找到合适的解决方案. ...

  2. iMX287A嵌入式Qt环境搭建

    目录 1.嵌入式Qt简介 2.查看开发板Qt库的版本 3.第一个嵌入式Qt程序--Hello World 4.Linux桌面版本Qt环境的搭建 5.注意 @ 1.嵌入式Qt简介 Qt 是一个跨平台的应 ...

  3. 我用STM32MP1做了个疫情监控平台2—Qt环境搭建

    目录 1.嵌入式Qt简介 2.查看开发板Qt库的版本 3.主机搭建Qt环境 4.第一个Qt程序--Hello World 5.一些问题 @ 1.嵌入式Qt简介 Qt 是一个跨平台的应用程序开发框架.使 ...

  4. Linux CentOS下Python+robot framework环境搭建

    Linux CentOS下Python+robot framework环境搭建   by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://w ...

  5. Linux系统zookeeper环境搭建(单机、伪分布式、分布式)

    本人现在对zookeeper的环境搭建做一个总结,一般zookeeper的安装部署可以有三种模式,单机模式.伪分布式和分布式,这三种模式在什么时候应用具体看大家的使用场景,如果你只有一台机器且只是想自 ...

  6. 阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建

    前言 搭建Redmine环境可以选择使用分别安装Ruby+Rails+Redmine+MySQL的方式, 但是过程中需要解决各种扰人的依赖问题.Docker为我们提供的Plan B,方便,快捷. 安装 ...

  7. Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试

    标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9 ...

  8. 基于kubuntu的C/C++开发环境搭建

    基于kubuntu的环境搭建 系统: kubuntu 14.04 中文输入法: SICM ibus fcitx:sougou 中文输入法的安装比较复杂,由于各种的不兼容,可能会出现各种的问题: 终端配 ...

  9. centos 8 集群Linux环境搭建

    一.集群Linux环境搭建 1. 注意事项 1.1 windows系统确认所有的关于VmWare的服务都已经启动 打开任务管理器->服务,查看五个VM选项是否打开. 1.2 确认好VmWare生 ...

随机推荐

  1. 设置dedecms标签 [field:global.autoindex/] 初始值{class递增}

    在{dede:arclist/}这个标签中有个[field:global.autoindex/],是从0开始自增,如果我们想自定义一个数值,比如自定义从2开始.那么就可以写成下面代码: [field: ...

  2. 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.1.内存区域

    1.内存区域 根据<Java虚拟机规范(Java SE 7版)> 的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示.  程序计数器 当前线程所执行的字节码的行号指 ...

  3. <!--注释-->和<%--注释--%>有什么区别

    转载:版权所有:基础软件.作者邮箱:s.j.l.studio@hotmail.com,sun.j.l.studio@gmail.com.本文首发于 http://www.cnblogs.com/Fou ...

  4. 跳舞玩偶Doll正式上线

    有问题或者建议大家可以联系我的QQ 914287516 或者qq邮箱 官方qq群 325631077:

  5. Latex 参考文献引用

    转:http://blog.sina.com.cn/s/blog_4b164557010143tl.html 导入 \usepackage[option]{natbib} 具体的 option 有 r ...

  6. PTA练习题之7-1 出租车计价(15 分)

    7-1 出租车计价(15 分) 本题要求根据某城市普通出租车收费标准编写程序进行车费计算.具体标准如下: 起步里程为3公里,起步费10元: 超起步里程后10公里内,每公里2元: 超过10公里以上的部分 ...

  7. oracle 日期常用函數sysdate

    SYSDATE   2 --◎ 可得到目前系統的時間     3           4   ex.      5     select sysdate from dual;   6          ...

  8. 16、SpringBoot-CRUD错误处理机制(3)

    3).将自己指定的数据携带出去 出现错误以后,会来到/error请求,会被BasicErrorController 进行处理 响应出去的数据是由 getErrorAttributes 得到的( Abs ...

  9. 【洛谷P1982】小朋友的数字

    小朋友的数字 题目链接 题目翻译: 每个小朋友有一个数字,构成一个数字序列a1,a2…an 我们定义“特征值”fi为a1~ai中的最大连续子段和 再定义“分数”si为1~i-1中最大的(sj+fj), ...

  10. 让NSArray数组中每个对象都调用的方法

    1. [array valueForKey:@"title"]; //Returns an array containing the results of invoking val ...