搭建fedora16->tiny210 Qt交叉编译环境 总结

4 篇文章 0 订阅
1 篇文章 0 订阅

先说参考资料吧:

友善之臂提供的《tiny210用户手册》(下面简称用户手册)是必不可少的,在测试交叉编译环境是否搭建好后,要写测试应用程序,那么210用户手册上所缺少的这部分在《Mini6410 Qt4Qtopia编程开发指南-20101228》(下面简称开发指南)中有所说明。

fedora安装qt

1.#yum intall qt qt-devel qt-x11 qt-doc qt-demos qt-examples qt-assistant qt-creator qt-config

2.安装完后命令为qmake-qt4

建立交叉编译环境(用户手册5.4.4

Linux平台下,要为开发板编译内核,图形界面Qtopia/Qt4bootloader,还有其他一些应用程序,均需要交叉编译工具链,我们使用的是arm-linux-gcc-4.5.1,它默认采用armv6指令集,支持硬浮点运算,下面是安装它的详细步骤。

Step1

将光盘Linux目录中的arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz复制到Fedora9某个目录下如tmp/,然后进入到该目录,执行解压命令:

#cd /tmp

#tar xvzfarm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /

注意:C后面有个空格,并且C是大写的,它是英文单词Change的第一个字母,在此是改变目录的意思。执行该命令,将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.5.1目录

Step2

把编译器路径加入系统环境变量,运行命令

#vim/root/.bashrc

编辑/root/.bashrc文件,注意bashrc前面有一个.,修改最后一行为exportPATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin注意路径一定要写对,否则将不会有效。如图,保存退出。

重新登录系统(不必重启机器,开始->logout即可),使以上设置生效,在命令行输入arm-linux-gccv,会出现如下信息,这说明交叉编译环境已经成功安装。

解压安装源代码及其他工具(用户手册5.5

本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括:

- Linux内核源代码

- Qtopia-2.2.0平台源代码(分为x86arm平台两个版本)

- arm-qt-extended-4.4.3平台源代码(也就是Qtopia4,分为x86arm两个版本)

- QtE-4.7.0平台源代码(arm版本)

- busybox-1.17源代码- Linux编程示例源代码

- 目标文件系统目录

- 目标文件系统映象制作工具(包括yaffs2UBIFS)

- 图形界面的Linuxlogo制作工具logomaker

注意:所有的源代码和工具都是通过解压方式安装的,所有的源代码均使用统一的编译器arm-linux-gcc-4.5.1编译

解压安装源代码

首先创建工作目录/opt/FriendlyARM/mini210/linux

在命令行执行

#mkdir p /opt/FriendlyARM/tiny210/linux

后面步骤的所有源代码都会解压安装到此目录中:

(1)准备好Linux源代码包

Fedora16系统中中创建一个临时目录/home/cherry/cherry_DataFile/linux

#mkdir /home/cherry/cherry_DataFile/linux

把光盘中linux目录中的所有文件都复制到/home/cherry/cherry_DataFile/linux目录中

(2)解压安装Linux内核源代码

在工作目录/opt/FriendlyARM/tiny210/linux中执行:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/linux-3.0.8-20111118.tar.gz

将创建生成linux-3.0.8目录,里面包含了完整的内核源代码

说明:20111118是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。

(3)解压安装目标文件系统

执行以下命令:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/rootfs_qtopia_qt4-20111118.tgz

将创建生成rootfs_qtopia_qt4目录

说明:20111118是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。

(4)解压安装嵌入式图形系统

qtopia源代码在工作目录/opt/FriendlyARM/tiny210/linux中执行:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/x86-qtopia-20100420.tar.gz

#tar xvzf /home/cherry/cherry_DataFile/linux/arm-qtopia-20101105.tar.gz

将创建x86-qtopiaarm-qtopia两个目录,并内含相应的全部源代码。

说明:x86-qtopiaarm-qtopia后面或许会有日期尾缀,它是我们的发行或更新日期标志,请以光盘中实际日期尾缀为准。源代码包中也包含了嵌入式浏览器konquor的源代码。另外,为了方便用户学习开发使用,此源代码包相比Qt公司的原始版本已经打过补丁,并做了诸多改进,它们都是源代码方式,我们不再一一赘述,感兴趣者可自行比较。

(5)解压安装嵌入式图形系统

qt-extended-4.4.3源代码在工作目录/opt/FriendlyARM/tiny210/linux中执行:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/x86-qt-extended-4.4.3-20101003.tgz

#tar xvzf /home/cherry/cherry_DataFile/linux/arm-qt-extended-4.4.3-20101105.tgz

将创建x86-qt-extended-4.4.3arm-qt-extended-4.4.3两个目录,并内含相应的全部源代码。

说明:x86-qt-extended-4.4.3arm-qt-extended-4.4.3后面或许会有日期尾缀,它是我们的发行或更新日期标志,请以光盘中实际日期尾缀为准。

(6)解压安装QtE-4.7.0

源代码在工作目录/opt/FriendlyARM/tiny210/linux中执行:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/x86-qte-4.6.1-20100516.tar.gz

#tar xvzf /home/cherry/cherry_DataFile/linux/arm-qte-4.7.0-20101105.tar.gz

将创建x86-qte-4.6.1arm-qte-4.7.0两个目录,并内含相应的全部源代码。

说明:x86-qtearm-qte压缩包后面或许会有日期尾缀,它是我们的发行或更新日期,请以光盘中实际日期尾缀为准。其中x86-qte-4.6.1主要是创建Creator开发平台,版本稍微低一些不会影响开发。

(7)解压安装busybox源代码

Busybox是一个轻型的linux命令工具集,在此使用的是busybox-1.13.3版本。用户可以从其官方网站下载最新版本(http://www.busybox.net)

在工作目录/opt/FriendlyARM/tiny210/linux中执行:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/busybox-1.17.2-20101120.tgz

将创建busybox-1.17.2目录,内含相应版本的全部源代码。

说明:为了方便用户编译使用,我们做了一个缺省的配置文件fa.config

(8)解压安装Linux示例程序

执行以下命令:

#cd/opt/FriendlyARM/tiny210/linux

#tar xvzf /home/cherry/cherry_DataFile/linux/examples-tiny210-20111118.tgz

将创建examples目录,并包含初学linux编程代码示例。

说明:20111118是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。examples目录中的代码均为友善之臂自主开发,并全部以源代码方式提供,它们都是一些基于命令行的小程序。

配置和编译内核

Linux内核与Android内核使用的是同一份源码,但是配置不同,使用以下命令编译内核。

#cd/opt/FriendlyARM/tiny210/ linux-3.0.8

#cpmini210_linux_defconfig.config ;注意config前面有个”.

你可以执行make menuconfig对配置进行修改,修改完成后,输出make进行编译:

#make

最后会在arch/arm/boot目录下生成zImage,将它替换掉SDimages/Linux/下的zImage烧写到tiny210即可。

编译和运行arm版本的QtE-4.7.0(用户手册5.11)

Qtopia-2.2.0十分类似,我们也为QtE-4.7.0的编译制作了现成的脚本build-all,进入源代码目录执行:

#cd/opt/FriendlyARM/mini210/linux/arm-qte-4.7.0

#./build-all

这个过程将十分漫长,根据机器配置不同,会有不同的编译时间,请耐心等待。

当顺利执行完毕,再运行mktarget脚本,将会从编译好的目标文件目录中,提取出必要的QtE-4.7.0库文件和可执行二进制示例,并打包为target-qte-4.7.0.tgz,把它在开发板的根目录下解压,就可以使用了,如下命令

#tar xvzftarget-qte-4.7.0.tgzC /

这样,就会在/usr/local/目录下创建生成Trolltech目录,它里面包含了运行所需要的所有库文件和可执行程序。使用说明:因为目标板中预装的Linux已经包含了QtE-4.7.0,测试之前,你可以先删除原有的,它位于/usr/local/Trolltech目录,把该目录使用rm命令完全删除就可以了。要运行QtE-4..6.3,建议先停止正在运行的Qtopia-2.2.0,点“设置”中的“关机”可出现如下界面,点“Terminate Server”即可关闭Qtopia-2.2.0系统。

 

也可以使用其他的方法,比如在启动脚本/etc/init.d/rcS中注释掉qtopia启动项,再重新系统系统;或者使用killall命令杀死相关的进程(比较多;甚至是直接删除/opt目录中的所有内容重启。关闭qtopia-2.2.0之后,在命令行输入qt4命令,即可启动刚刚解压安装的QtE-4.7.0了,如图:

编译和运行x86版本的Qt-Extended-4.4.3(用户手册5.12.2

以上两步按照用户手册上的步骤来,两个步骤都要等待蛮长时间。

接下来就是Qt creator中的操作了:

Qt creator中的交叉编译初始设置

注意:我的fedora16下的Qt creator是直接用yum来安装的,版本为4.8.0,版本不一样,可能导致下面的操作中的某些选项的位置不一样。

step1添加嵌入式版本的qmake路径

菜单->工具->选项->Qt4->手动设置->添加

路径为/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin/qmake

step2添加交叉编译器

菜单->工具->选项->工具栏->手动设置->添加

/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++

注:如果路径为/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/bin/g++,有可能会导致构建的时候出错,不过到底是不是这个原因,还在探究中,现在不能下定论。

step3项目中的构建配置

如图所示,都选为嵌入式调试的Qt版本。

构建环境变量中的 PATH一值也需要注意,现备份一个目前没问题的参考:

/opt/FriendlyARM/toolschain/4.5.1/bin:/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/cherry/.local/bin:/home/cherry/bin

注意:整个过程之前要先确认arm-linux-g++是否有正确安装,确认方法是在终端里输入arm-linux-g++ -v命令,如果显示版本信息则说明正确安装

 说点感想吧:其实这种按照步骤来进行的文章是最没有技术含量的,以前安装各种vs、以及winCE的交叉编译环境的时候也是这样,无非就是一个操作手册,但是为什么要添加这个路径,而不是另一个路径,就需要更深入的知道其所然,现在linux下的功力还不够深厚,慢慢修炼吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Building on: linux-g++ (x86_64, CPU features: mmx sse sse2) Building for: linux-aarch64-gnu-g++ (arm64, CPU features: neon) Target compiler: gcc 6.3.1 Configuration: cross_compile use_gold_linker compile_examples enable_new_dtags largefile neon precompile_header shared rpath release c++11 c++14 concurrent dbus reduce_exports stl Build options: Mode ................................... release Optimize release build for size ........ no Building shared libraries .............. yes Using C standard ....................... C11 Using C++ standard ..................... C++14 Using ccache ........................... no Using gold linker ...................... yes Using new DTAGS ........................ yes Using precompiled headers .............. yes Using LTCG ............................. no Target compiler supports: NEON ................................. yes Build parts ............................ libs Qt modules and options: Qt Concurrent .......................... yes Qt D-Bus ............................... yes Qt D-Bus directly linked to libdbus .... no Qt Gui ................................. yes Qt Network ............................. yes Qt Sql ................................. yes Qt Testlib ............................. yes Qt Widgets ............................. yes Qt Xml ................................. yes Support enabled for: Using pkg-config ....................... yes udev ................................... no Using system zlib ...................... yes Qt Core: DoubleConversion ....................... yes Using system DoubleConversion ........ no GLib ................................... no iconv .................................. yes ICU .................................... no Tracing backend ........................ Logging backends: journald ............................. no syslog ............................... no slog2 ................................ no Using system PCRE2 ..................... no Qt Network: getifaddrs() ........................... yes IPv6 ifname ............................ yes libproxy ............................... no Linux AF_NETLINK ....................... yes OpenSSL ................................ yes Qt directly linked to OpenSSL ........ no OpenSSL 1.1 ............................ no DTLS ................................... yes SCTP ................................... no Use system proxies ..................... yes Qt Gui: Accessibility .......................... yes FreeType ............................... yes Using system FreeType ................ no HarfBuzz ............................... yes Using system HarfBuzz ................ no Fontconfig ............................. no Image formats: GIF .................................. yes ICO .................................. yes JPEG ................................. yes Using system libjpeg ............... yes PNG .................................. yes Using system libpng ................ no EGL .................................... no OpenVG ................................. no OpenGL: Desktop OpenGL ....................... no OpenGL ES 2.0 ........................ no OpenGL ES 3.0 ........................ no OpenGL ES 3.1 ........................ no OpenGL ES 3.2 ........................ no Vulkan ................................. no Session Management ..................... yes Features used by QPA backends: evdev .................................. yes libinput ............................... no INTEGRITY HID .......................... no mtdev .................................. no tslib .................................. no xkbcommon .............................. no X11 specific: XLib ................................. no EGL on X11 ........................... no QPA backends: DirectFB ............................... no EGLFS .................................. no LinuxFB ................................ yes VNC .................................... yes Mir client ............................. no Qt Sql: SQL item models ........................ yes Qt Widgets: GTK+ ................................... no Styles ................................. Fusion Windows Qt PrintSupport: CUPS ................................... no Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. no OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite2 ................................ no SQLite ................................. yes Using system provided SQLite ......... no TDS (Sybase) ........................... no Qt Testlib: Tester for item models ................. yes Qt SerialBus: Socket CAN ............................. yes Socket CAN FD .......................... yes Qt QML: QML network support .................... yes QML debugging and profiling support .... yes QML sequence object .................... yes QML list model ......................... yes QML XML http request ................... yes QML Locale ............................. yes QML delegate model ..................... yes Qt Quick: Direct3D 12 ............................ no AnimatedImage item ..................... yes Canvas item ............................ yes Support for Qt Quick Designer .......... yes Flipable item .......................... yes GridView item .......................... yes ListView item .......................... yes TableView item ......................... yes Path support ........................... yes PathView item .......................... yes Positioner items ....................... yes Repeater item .......................... yes ShaderEffect item ...................... yes Sprite item ............................ yes Qt Scxml: ECMAScript data model for QtScxml ...... yes Qt Gamepad: SDL2 ................................... no Qt 3D: Assimp ................................. yes System Assimp .......................... no Output Qt3D Job traces ................. no Output Qt3D GL traces .................. no Use SSE2 instructions .................. no Use AVX2 instructions .................. no Aspects: Render aspect ........................ yes Input aspect ......................... yes Logic aspect ......................... yes Animation aspect ..................... yes Extras aspect ........................ yes Qt 3D Renderers: OpenGL Renderer ........................ yes Qt 3D GeometryLoaders: Autodesk FBX ........................... no Qt Wayland Client ........................ no Qt Wayland Compositor .................... no Qt Bluetooth: BlueZ .................................. no BlueZ Low Energy ....................... no Linux Crypto API ....................... no WinRT Bluetooth API (desktop & UWP) .... no Qt Sensors: sensorfw ............................... no Qt Quick Controls 2: Styles ................................. Default Fusion Imagine Material Universal Qt Quick Templates 2: Hover support .......................... yes Multi-touch support .................... yes Qt Positioning: Gypsy GPS Daemon ....................... no WinRT Geolocation API .................. no Qt Location: Qt.labs.location experimental QML plugin . yes Geoservice plugins: OpenStreetMap ........................ yes HERE ................................. yes Esri ................................. yes Mapbox ............................... yes MapboxGL ............................. no Itemsoverlay ......................... yes QtXmlPatterns: XML schema support ..................... yes Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux ........................ yes OpenAL ................................. no PulseAudio ............................. no Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. no Windows Media Foundation ............... no Qt Tools: QDoc ................................... no Qt WebEngine: Embedded build ......................... yes Pepper Plugins ......................... no Printing and PDF ....................... no Proprietary Codecs ..................... no Spellchecker ........................... yes Native Spellchecker .................... no WebRTC ................................. no Use System Ninja ....................... no Geolocation ............................ yes WebChannel support ..................... yes Use v8 snapshot ........................ yes Kerberos Authentication ................ no Building v8 snapshot supported ......... yes Use ALSA ............................... no Use PulseAudio ......................... no Optional system libraries used: re2 .................................. no icu .................................. no libwebp, libwebpmux and libwebpdemux . no opus ................................. no ffmpeg ............................... no libvpx ............................... no snappy ............................... no glib ................................. no zlib ................................. yes minizip .............................. no libevent ............................. no jsoncpp .............................. no protobuf ............................. no libxml2 and libxslt .................. no lcms2 ................................ no png .................................. no JPEG ................................. no harfbuzz ............................. no freetype ............................. no x11 .................................. no Required system libraries: fontconfig ........................... no dbus ................................. no nss .................................. no khr .................................. no glibc ................................ yes Required system libraries for qpa-xcb: libdrm ............................... no xcomposite ........................... no xcursor .............................. no xi ................................... no xrandr ............................... no xtst ................................. no Note: Also available for Linux: linux-clang linux-icc

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值