There are too few information available on how to easily setup QT environment for building Beaglebone applications (command line or GUI). In this tutorial we will compile QT and setup the environment from scratch.

1. My environment

  • Host: Ubuntu 12.10 32bit (VMplayer)
  • Target: BeagleBone Black running Angstrom
  • QT: 4.8.5

2. Setup Angstrom cross-compile toolchain for Linux

3. Download and un-tar QT

$ wget http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.tar.gz
$ tar -xzf qt-everywhere-opensource-src-4.8..tar.gz
$ mv qt-everywhere-opensource-src-4.8. qt-4.8.-beagle

4. Create qmake.conf

$ cd qt-4.8.-beagle
$ mkdir ./mkspecs/qws/linux-am335x-g++
$ cp ./mkspecs/qws/linux-arm-g++/qplatformdefs.h ./mkspecs/qws/linux-am335x-g++
$ touch ./mkspecs/qws/linux-am335x-g++/qmake.conf

Add the following to qmake.conf with your favorite editor:

 
#
# qmake configuration for building with arm-linux-g++
# include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf) # modifications to g++.conf
#Toolchain #Compiler Flags to take advantage of the ARM architecture
QMAKE_CFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++ # modifications to linux.conf
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip load(qt_config)

5. Configure QT embedded

./configure -v -opensource -confirm-license -prefix /opt/qt -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-am335x-g++ -depths 16,24,32 -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-linuxtp -plugin-mouse-pc -fast -little-endian -host-big-endian -no-pch -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-webkit -no-qt3support -nomake examples -nomake demos -nomake docs -nomake translations

  

 

6. Build and install

$ make -j
$ sudo make install

“-j 4″ will run the long build process reusing 4 CPU cores, you can change to your own CPU cores amount.

7. Install Qt SDK (lib) we built previously on your board

  • Make sure you beaglebone is connected to your host
  • ssh to your beagle (ssh root@192.168.7.2)
  • Create dir structure from your prefix:
     
    root@beaglebone:/# mkdir /opt
    root@beaglebone:/# mkdir /opt/qt
  • Copy lib from your host to beagle:
     
    $ scp -r /opt/qt/lib root@192.168.7.2:"/opt/qt"
  • Add the lib directory to path by editing /etc/profile and adding:
     
    PATH="...:/opt/qt/lib"

8. Download, install and configure QT Creator

  • I suggest installing QT Creator using regular installer:
  • Download qt-creator-linux-x86-opensource-2.8.0.run for x86 or qt-creator-linux-x86_64-opensource-2.8.0.run for 64bit
  •  
    chmod +x qt-creator-linux-x86_64-opensource-2.8..run
    ./qt-creator-linux-x86_64-opensource-2.8..run
  • Follow installation Wizard
  • Run Angstrom toolchain environment setup:
     
    $ . /usr/local/angstrom/arm/environment-setup
  • Open Qt Creator and
  • Configure Qt version
  • Go to Tools->Options->Build & Run->Qt Versions and click Add
  • Select qmake.conf from /opt/qt/bin
  • Click Ok
  • Configure target device connection
  • Go to Tools->Options->Devices
  • Click Add and select Generic Linux Device
  • Add IP 192.168.7.2, User: root
  • Set name to “Beaglebone”
  • Click Ok
  • Configure Compiler
  • Go to Tools->Options->Build & Run->Compilers and click Add->GCC
  • Select compiler path: /usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-g++
  • Click Ok
  • Configure Kit
  • Go to Tools->Options->Build & Run->Kits and click Add
  • Call new kit Beaglebone
  • Select device type: “Generic Linux Device”
  • Select the device you previously created
  • Select compiler you created
  • Select Qt version you created
  • Select GDK path as /usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gdk
  • Click Ok

9. Build Qt application

  • Create new project (File->New project->Qt Project->Qt Console application)
  • Edit your project (.pro) file
  • Add the following after “TARGET=…” line:
     
    target.files = <YOUR EXECUTABLE NAME>
    target.path = /home/root
    INSTALLS = target
  • Go to Projects -> Run, you should see on “Files to deploy” table your “target” settings
  • Now you are ready to build and deploy you project on your target board
  • The following example application should print Hello world inside your console:
     
    #include <QCoreApplication>
    #include <iostream> int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv); std::cout << "hello world" << std::endl; return a.exec();
    }

Good luck!

Meir Tseitlin

This entry was posted in BeagleboneLinux EmbeddedQT by Miro. Bookmark the permalink.

71 THOUGHTS ON “BUILDING AND SETTING UP QT ENVIRONMENT FOR BEAGLEBONE”

Building and setting up QT environment for BeagleBone的更多相关文章

  1. Storm(1) - Setting Up Development Environment

    Setting up your development environment 1. download j2se 6 SDK from http://www.oracle.com/technetwor ...

  2. Qt新安装之后出现Error while building/deploying (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make”

      Ubuntu14.04初次安装Qt之后可能出现Error while building/deploying project *** (kit: Desktop Qt 5.7.0 GCC 64bit ...

  3. [SystemC] Setting Up the Environment

    My operating system is Ubuntu 12.04. 0. Checking Your Compilers First thing first, you will need the ...

  4. Qt.Qt新安装之后出现Error while building/deploying (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make”

    出问题的环境: 操作系统: Ubuntu18.04 安装包: qt-opensource-linux-x64-5.8.0.run 现象: 新建一个Hello World项目, 试着运行, 出现以下提示 ...

  5. Glibc编译报错:*** LD_LIBRARY_PATH shouldn't contain the current directory when*** building glibc. Please change the environment variable

    执行glibc编译出错如下图 [root@localhost tmpdir]# ../configure --prefix=/usr/loacl/glibc2.9 --disable-profile ...

  6. qt-5.6.0 移植之qt源码编译

    其实这只是给自己看的一个configure选项笔记,没有太多的东西. 首先: 下载qt5.6的源码: 地址: http://download.qt.io/archive/qt/5.6/ 下载完解压: ...

  7. How to build a GUI in ROS with Qt / C++

    p { margin-bottom: 0.1in; direction: ltr; line-height: 120%; text-align: left; widows: 2; orphans: 2 ...

  8. Qt Creator编译问题

    有时候需要自己编译Qt Creator,需要注意的就是qmake版本的问题,比如我用4.8.1和4.8.6同样编译出来的Qt Creator在同样的qtconfig-qt4下所呈现的效果是不一样的. ...

  9. This page is about building Firefox Desktop

    This page is about building Firefox Desktop The Mozilla build system, like the rest of the Mozilla c ...

随机推荐

  1. input checkbox问题和li里面包含checkbox

    <input type="checkbox" id="checkbox1"/> $("input#checkbox1").cli ...

  2. Linux IP 路由实现

    以下代码取自 kernel . [数据结构] 该结构被基于路由表的classifier使用,用于跟踪与一个标签(tag)相关联的路由流量的统计信息,该统计信息中包含字节数和报文数两类信息. 这个结构包 ...

  3. java的异常处理机制(try…catch…finally)

    1 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信 ...

  4. ActionBar官方教程(7)自定义操作项的view,如何得到它及处理它的事件

    Adding an Action View An action view is a widget that appears in the action bar as a substitute for ...

  5. 【转】Mac QQ截图保存在哪里?

    原文网址:http://www.pc6.com/edu/67677.html QQ Mac版的截屏图片保存在哪儿呢?可不可以像Windows版本一样设定保存路径呢?当然是可定的.Mac QQ截图保存你 ...

  6. Android 所有颜色代码

    colors.xml <?xml version="1.0" encoding="utf-8" ?> <resources> <c ...

  7. HDOJ 1879

    思路:求最小生成树(最小生成树就是权值之和最小的极小连通子图) ,注意将已修过的边的权值置为0: 数据结构:由于数据量小,可以用临接矩阵直接存储图 #include<stdio.h> #i ...

  8. Kettle汇总时参数

    Kettle汇总时手动执行小时汇总命令: ./kitchen.sh -norep -file /usr/local/evqm/kettle/kettle_scripts/rpt_hour.kjb -p ...

  9. Java笔记(十七)……异常

    异常概述 异常是什么 是对问题的描述,将问题进行对象的封装 异常体系 Throwable |---Error |---Exception |---RuntimeException 异常体系的特点 异常 ...

  10. linux获取目录下文件

    查看当前目录下的文件: find . -type f 查看当前目录下的文件夹: find . -type d 如果文件file1不为空: if [ -s file1 ];then      echo  ...