Setting-up QtCreator to cross compile for iMX6 series

From ESS-WIKI
Revision as of 08:31, 9 August 2016 by Winston.huang (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Prerequisites

All operations in this guide are based on Ubuntu 12.04 LTS 64bit only.
First please install Ubuntu 12.04 LTS 64bit* with minimum 2GB memory.
* ubuntu-12.04.1-desktop-amd64.iso

Installing required packages

Please login and perform the following commands:

$ sudo apt-get install ssh
$ sudo apt-get install ia32-libs libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx:i386 zlib1g-dev:i386 uuid-dev:i386 liblzo2-dev:i386 \ 
libncurses5-dev:i386
$ sudo apt-get install \
bison build-essential ccache dpkg flex gcc g++ gettext intltool \
libarchive-zip-perl libfreetype6-dev libdbus-glib-1-dev liborbit2-dev \
libxml2-dev libx11-dev libgtk2.0-dev liblzo2-2 libtool m4 \
patch rpm tcl uboot-mkimage uuid zlib1g zlib1g-dev \
git gnupg flex bison gperf build-essential  zip \
curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev:i386 \
libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib \
mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \
gcc-4.6 g++-4.6 cpp-4.6 gcc-4.6-multilib uuid-dev liblzo2-dev \
uboot-mkimage libarchive-zip-perl \
wget git-core unzip texinfo gawk diffstat build-essential chrpath \
sed cvs subversion coreutils texi2html \
docbook-utils python-pysqlite2 help2man make gcc g++ \
desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial \
autoconf automake groff curl lzop asciidoc xterm
$ sudo apt-get install libncurses5-dev:i386 liblzo2-dev:i386 uuid-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
$ tar zcvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz \
/usr/lib/i386-linux-gnu/{libuuid.a,libuuid.so,liblzo2.so,liblzo2.a}
$ sudo apt-get install uuid-dev liblzo2-dev
$ sudo tar zxvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz -C /

Installing JDK

Please download "jdk-6u45-linux-x64.bin" manually, put it to directory ~/FILES/ and perform the following commands:

$ cd /usr/lib
$ sudo ~/FILES/jdk-6u45-linux-x64.bin
$ sudo mkdir jvm
$ cd jvm
$ sudo mv ../jdk1.6.0_45 .
$ cd jdk1.6.0_45/
$ sudo update-alternatives --install /usr/bin/java    java    /usr/lib/jvm/jdk1.6.0_45/jre/bin/java    2
$ sudo update-alternatives --install /usr/bin/javac   javac   /usr/lib/jvm/jdk1.6.0_45/bin/javac   2
$ sudo update-alternatives --install /usr/bin/jar     jar     /usr/lib/jvm/jdk1.6.0_45/bin/jar     2
$ sudo update-alternatives --install /usr/bin/javap   javap   /usr/lib/jvm/jdk1.6.0_45/bin/javap   2
$ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc 2
$ sudo update-alternatives --config javap
$ sudo update-alternatives --config javadoc
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config jar
$ cd ~/
$ sudo sh -c "echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" >> /etc/environment"

Installing cross toolchain

Please use bitbake command to build one toolchain installer or get a pre-built one.

Qt4 SDK

Please perform following command to make toolchain installer.
$ bitbake fsl-image-x11 -c populate-sdk
Please change working directory to where installer located and perform the following command.
$ sudo ./poky-eglibc-x86_64-fsl-image-x11-cortexa9hf-vfp-neon-toolchain-qt4-1.5.3.sh

Qt5 SDK

Please perform following command to make toolchain installer.
$ bitbake fsl-image-x11-qt5 -c populate-sdk
Please change working directory to where installer located and perform the following command.
$ sudo ./poky-eglibc-x86_64-fsl-image-x11-qt5-cortexa9hf-vfp-neon-toolchain-1.5.3.sh


Working within QtCreator 3 (Qt4/Qt5)

Installing the QtCreator

Please download "qt-creator-opensource-linux-x86_64-3.1.2.run", put it to directory ~/FILES/ and install it by following command:

$ ~/FILES/qt-creator-opensource-linux-x86_64-3.1.2.run

Starting the QtCreator

$ source /opt/poky/1.5.3/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
$ cd ~/qtcreator-3.1.2/
$ bin/qtcreator
  1. The QtCreator's main window shows up.
    2015-02-03 153341.png
  2. Check QtCreator's version by using "Help" -> "About Qt Creator".
    2015-01-30 165420.png

Configuring the Cross-Compiler Options

  1. Bring up the options dialog using "Tools" -> "Options..."
  2. Select the "Devices" page on the left, and click "Add..."
  3. Select "Generic Linux Device" and click "Start Wizard".
    2015-01-30 165533.png
  4. Specify proper settings and click "Next>"
    2015-01-30 165611.png
  5. Click "Finish"
  6. Device test finished successfully. Click "Close".
    2015-01-30 165659.png

    If device test failed, please go back to specify proper settings.
    2015-02-24 113504.png
    (It is necessary to set a blank password at least, null password does not work.)

    2015-02-24 113635.png
    (It means device's IP is incorrect or some network issues occured.)
  7. Click "Apply"
  8. Select the "Build & Run" page on the left, switch to "Compilers" tab, drop down "Add" menu and choose "GCC".
    2015-01-30 165904.png
  9. Name the compiler as "iMX6 GCC"
  10. Click "Browse..." to select "/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++"
  11. Click "Apply"
    2015-01-30 171806.png
  12. Switch to the "Debuggers" tab
  13. Click "Add"
  14. Name the debugger as "iMX6 gdb"
  15. Click "Browse..." to select "/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb"
  16. Click "Apply"
    2015-01-30 171323.png
  17. Switch to the "Qt Versions" tab.
  18. For Qt4, check if the "Qt 4.8.5 (System)" is auto detected in "Manual" item ?
    2015-02-17 170318.png
    For Qt5, check if the "Qt 5.2.1 in PATH (qt5)" is auto detected in "Manual" item ?
    2015-02-03 090959.png
    If not, click "Add..." to choose the proper qmake.
  19. Click "Apply"
    For Qt4
    2015-01-30 170530.png
    For Qt5
    2015-02-03 091121.png
  20. Switch to the "Kits" tab.
  21. Click "Add".
  22. Name the kit as "iMX6 toolchain"
  23. Specify the correct "Device Tpye", "Compiler", "Debugger" and "Qt version"
  24. Click "Browse..." to select "/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi" as sysroot
  25. Click Apply
    For Qt4
    2015-01-30 172609.png
    For Qt5
    2015-02-03 090548.png
  26. Click OK to finalize the configuration.
  27. Invoke the options dialog again to make sure the "iMX6 toolchain" is default kit.
    2015-01-30 172812.png

Creating the Project

  1. Bring up "New" dailog using "File" -> "New File or Project..."
  2. Select "Applications" -> 'Qt Widgets Application"
  3. Click "Choose..."
    2015-01-30 173215.png
  4. Use "hello_qt" as name
  5. Create in "/home/adv/qt"
  6. Click "Next"
    2015-01-30 173309.png
  7. Uncheck "Desktop" and check "IMX6 toolchain"
  8. Click "Next".
    2015-02-02 173538.png
  9. Use default settings for "Class Information"
  10. Click "Next"
    2015-01-30 173644.png
  11. Use default settings for "Project Management"
  12. Click "Finish"
    2015-01-30 173716.png
  13. Double click "hello_qt.pro" to switch to editor window
  14. In new project it is necessary to add following two lines into qt project file.
    target.path = .
    INSTALLS += target
    2015-01-30 173913.png
  15. Press "Ctrl+S" to save file.
  16. Double click "mainwindow.ui" to switch to Design mode
    2015-01-30 174034.png
  17. Drag & drop one Label widget on main form, use property editor on the right side to change text and font size
    2015-01-30 174300.png2015-01-30 174333.png2015-01-30 174418.png
    2015-01-30 174555.png
  18. Save all project files using "File" -> "Save All"

Building the Project

  1. Switch to "Projects" mode
  2. Check if "build configuration" is set to "Debug".
    2015-02-02 150145.png
  3. Check if "Files to deploy" is correct
    2015-02-02 150404.png
  4. Switch to "Edit" mode
  5. Click "Build" using context menu of project "hello_qt"
    2015-02-02 105114.png
  6. The green "Build" bar means no error occured.
    2015-02-02 105318.png
  7. Press "Alt+4" to show "Compile Output".
    For Qt4
    2015-02-02 105551.png
    For Qt5
    2015-02-03 085517.png

Deploying the Application

  1. Click "Deploy" using context menu of project hello_qt
    2015-02-02 105748.png
  2. The green "Deploy" bar indicates no error occured.
    For Qt4
    2015-02-02 105934.png
    For Qt5
    2015-02-03 085935.png

Debugging the Application

  1. Click debug icon to start debugging.
    2015-02-02 110650.png
  2. Press "Alt+3" to show "Application Output"
    For Qt4
    2015-02-02 110950.png
    For Qt5
    2015-02-03 091444.png
  3. The "hello_qt" shows up on primary display.
    Hello qt.png
  4. Click "stop" to stop debugging.
    2015-02-03 092707.png
  5. The deafult desktop returns back.
    For Qt4
    Qt4 desktop half.png
    For Qt5
    Qt5 desktop half.png

Working within QtCreator 2 (Qt4 only)

Installing the QtCreator

Please download "qt-creator-linux-x86_64-opensource-2.8.1.run", put it to directory ~/FILES/ and install it by following command:

$ ~/FILES/qt-creator-linux-x86_64-opensource-2.8.1.run

Starting the QtCreator

$ source /opt/poky/1.5.3/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
$ cd ~/qtcreator-2.8.1/
$ bin/qtcreator
  1. The QtCreator's main window shows up.
    2015-02-03 142536.png
  2. Check QtCreator's version by using "Help" -> "About Qt Creator".
    2015-02-03 142607.png

Configuring the Cross-Compiler Options

  1. Bring up the options dialog using "Tools" -> "Options..."
  2. Select the "Devices" page on the left, and click "Add..."
  3. Select "Generic Linux Device" and click "Start Wizard".
    2015-01-30 165533.png
  4. Specify proper settings and click "Next>"
    2015-01-30 165611.png
  5. Click "Finish"
  6. Device test finished successfully. Click "Close".
    2015-01-30 165659.png
    If device test failed, please go back to specify proper settings.
    2015-02-24 113504.png
    (It is necessary to set a blank password at least, null password does not work.)

    2015-02-24 113635.png
    (It means device's IP is incorrect or some network issues occured.)
  7. Click "Apply"
  8. Select the "Build & Run" page on the left, switch to "Compilers" tab, drop down "Add" menu and choose "GCC".
    2015-02-24 114150.png
  9. Name the compiler as "iMX6 GCC"
  10. Click "Browse..." to select "/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++"
  11. Click "Apply"
    2015-02-24 114748.png
  12. Switch to the "Qt Versions" tab.
  13. Check if the "Qt 4.8.5 in PATH (System)" is auto detected in "Manual" item ?
    2015-02-03 143901.png
    If not, click "Add..." to choose the proper qmake.
  14. Click "Apply"
    2015-02-03 144003.png
  15. Switch to the "Kits" tab.
  16. Click "Add".
  17. Name the kit as "iMX6 toolchain"
  18. Specify the correct "Device Tpye", "Compiler", "Debugger" and "Qt version"
  19. Click "Browse..." to select "/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi" as sysroot
  20. Click "Edit" to select "/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb" as Debugger
  21. Click "Apply"
    2015-02-03 150311.png
  22. Click OK to finalize the configuration.
  23. Invoke the options dialog again to make sure the "iMX6 toolchain" is the default kit.
    2015-02-24 132359.png

Creating the Project

  1. Bring up "New" dailog using "File" -> "New File or Project..."
  2. Select "Applications" -> 'Qt Gui Application"
  3. Click "Choose..."
    2015-02-03 150625.png
  4. Use "hello_qt" as name
  5. Create in "/home/adv/qt"
  6. Click "Next"
    2015-01-30 173309.png
  7. Uncheck "Desktop" and check "IMX6 toolchain"
  8. Click "Next".
    2015-02-03 150917.png
  9. Use default settings for "Class Information"
  10. Click "Next"
    2015-01-30 173644.png
  11. Use default settings for "Project Management"
  12. Click "Finish"
    2015-01-30 173716.png
  13. Double click "hello_qt.pro" to switch to editor window
  14. In new project it is necessary to add following two lines into qt project file.
    target.path = .
    INSTALLS += target
    2015-01-30 173913.png
  15. Press "Ctrl+S" to save file.
  16. Double click "mainwindow.ui" to switch to Design mode
    2015-01-30 174034.png
  17. Drag & drop one Label widget on main form, use property editor on the right side to change text and font size
    2015-01-30 174300.png2015-01-30 174333.png2015-01-30 174418.png
    2015-01-30 174555.png
  18. Save all project files using "File" -> "Save All"

Building the Project

  1. Switch to "Projects" mode
  2. Check if "build configuration" is set to "Debug".
    2015-02-02 150145.png
  3. Check if "Files to deploy" is correct
    2015-02-02 150404.png
  4. Switch to "Edit" mode
  5. Click "Build" using context menu of project "hello_qt"
    2015-02-02 105114.png
  6. The green "Build" bar means no error occured.
    2015-02-02 105318.png
  7. Press "Alt+4" to show "Compile Output".
    2015-02-02 105551.png

Deploying the Application

  1. Click "Deploy" using context menu of project hello_qt
    2015-02-02 105748.png
  2. The green "Deploy" bar indicates no error occured.
    2015-02-02 105934.png

Debugging the Application

  1. Click debug icon to start debugging.
    2015-02-02 110650.png
  2. Press "Alt+3" to show "Application Output"
    2015-02-02 110950.png
  3. The "hello_qt" shows up on primary display.
    Hello qt.png
  4. Click "stop" to stop debugging.
    2015-02-03 092707.png
    Debugging has finished.
    2015-02-24 140104.png
  5. The deafult desktop returns back.
    Qt4 desktop half.png

References

  1. 12.04 LTS (Precise Pangolin)
  2. Java Archive - SE 6
  3. Project Development Manual
  4. Creator Files at SourceForge.net