玩转树莓派- RaspBerry,Qt5交叉编译移植新手指南

Raspberry Pi (BCM2835): Device Information

Architecture ARMv6
CPU ARM11
RAM 256MB OR 512MB since October 2012 (shared with GPU)
GPU VideoCore IV
OpenGL OpenGL ES 2.0
Multimedia OpenMax IL 1.1.2
Qt 5.0 (eglfs/QPA) Supported, with OpenGL ES 2.0

Qt 5 port functional state (against Raspbian Wheezy (primary reference platform))

Feature State Additional info
Hardware accelerated cursor Done upstream
Wayland support Done upstream
Hardware decoding of images To Do
Scenegraph tailoring To Do
HardFP support Done Requires v8 patch
Qt Multimedia Done Requires gst-omx
Webkit integration To Do webgl, tex mapper
  • 开始

    首先我们先创建一个目录来存放Qt5的源代码以及交叉编译所需要的所有文件,我选择在当前用户家目录下创建一个叫做“opt”的目录。

    1 diveinedu@debian :~$ mkdir  ~/opt
    2 diveinedu@debian :~$ cd  ~/opt

    然后,下载以下文件:

    下载Raspbian Wheezy 镜像  (这里下载 [raspberrypi.org]):

    1 diveinedu@debian :~/opt$ wget  http://downloads.raspberrypi.org/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip
    2 diveinedu@debian :~/opt$unzip  2013-02-09-wheezy-raspbian.zip

    下载解压完后挂载镜像:

    1 diveinedu@debian :~/opt$ sudo  mkdir  /mnt/rasp-pi-rootfs
    2 [email protected]:~/opt$ sudo mount  -o loop,offset=62914560 2013-03-09-wheezy-raspbian.img    /mnt/rasp-pi-rootfs

    我们这不介绍交叉工具链的编译,直接下载针对树莓派优化定制的交叉编译工具链(或者用github上树莓派的工具链https://github.com/raspberrypi/tools):

    1 [email protected]:~/opt$  wget  http://blueocean.qmh-project.org/gcc-4.7-linaro-rpi-gnueabihf.tbz
    2 [email protected]:~/opt$   tar -xf gcc-4.7-linaro-rpi-gnueabihf.tbz

    因为上面的交叉编译工具是32位Linux的,如果你所使用的是64位Linux的话,还需要安装32位的运行库软件包:

    1 [email protected]:~/optsudo apt-get install ia32-libs

    如果用的是Debian Wheezy的64位系统,上面的行不通,因为Debian Wheezy 64位开启了multiarch-support ,需要执行:

    1 [email protected]:~/opt$  sudo apt-get install multiarch-support
    2 [email protected]:~/opt$  sudo dpkg --add-architecture i386
    3 [email protected]:~/opt$  sudo apt-get update
    4 [email protected]:~/opt$  sudo apt-get install ia32-libs

    从远程仓库克隆一份cross-compile-tools到本地:

    1 [email protected]:~/opt$  git clone git://gitorious.org/cross-compile-tools/cross-compile-tools.git

    从远程仓库克隆一份Qt5的源码库到本地:

    1 [email protected]:~/opt$  git clone git://gitorious.org/qt/qt5.git
    2 [email protected]:~/opt$   cd qt5
    3 [email protected]:~/opt/qt5$  ./init-repository

    最后,把qtjsbackend子项目打补丁让其支持armv6指令集的树莓派:

    1 [email protected]:~/opt/qt5cd ~/opt/qt5/qtjsbackend
    2 [email protected]:~/opt/qt5$  git fetch https://codereview.qt-project.org/p/qt/qtjsbackend  refs/changes/56/27256/4   &&   git  cherry-pick  FETCH_HEAD

    如果有冲突的话就解决冲突的代码。

  • 编译qtbase

    现在我们已经准备好了为树莓派交叉编译Qt5所需要的全部资源,在正式编译之前只需要执行一个小脚本来修正一下符号链接和库文件路径设置:

    1 [email protected]:~/opt/qt5cd  ~/opt/cross-compile-tools
    2 [email protected]:~/opt/qt5sudo  ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc

    进入qt5/qtbase目录执行以下脚本进行配置和编译工作:

    1 [email protected]:~/opt/qt5$ cd ~/opt/qt5/qtbase
    2 [email protected]:~/opt/qt5/qtbase$ ./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -make libs -prefix /usr/local/qt5pi -no-pch
    3 [email protected]:~/opt/qt5/qtbase$ make -j 4
    4 [email protected]:~/opt/qt5/qtbase$ sudo make install
  • 编译其他模块

    执行到这步的时候,你已经有了针对树莓派交叉编译的qmake工具了,你可以一一的去交叉编译Qt5的其他模块了,为里避免模块编译过程中可能 出现的依赖错误,建议按照这个模块顺序去编译: qtimageformats, qtsvg, qtjsbackend, qtscript, qtxmlpatterns, qtdeclarative, qtsensors, qt3d, qtgraphicaleffects,qtjsondb,qtlocation, qtdocgallery.

    模块编译相关的类似命令:

    1 [email protected]:~/opt/qt5$ cd qtimageformats
    2 [email protected]:~/opt/qt5/qtimageformats$ /usr/local/qt5pi/bin/qmake .
    3 [email protected]:~/opt/qt5/qtimageformats$ make -j4
    4 [email protected]:~/opt/qt5/qtimageformats$ sudo make install

    把你所需要或者所想编译的模块都按顺序执行编译安装命令后,所有需要的东西都安装在了镜像文件(raspbain wheezy image)里面了。我们接下来就是把他烧到SD卡上去。 SD卡烧写命令:

    1 [email protected]:~/opt/qt5$ cd ~/opt/
    2 [email protected]:~/opt$ sync; sudo umount /mnt/rasp-pi-rootfs
    3 [email protected]:~/opt$ sudo dd bs=1M if=2013-02-09-wheezy-raspbian.img of=/dev/sdc; sync

    提示:/dev/sdc是我使用的SD的设备, 请根据自己的实际情况修改。

    到这里,树莓派的Qt5运行库的编译移植过程就Done了。

    后续会有例程Demo以及Qt5的QPA机制在树莓派上的eglfs平台插件的特点介绍和传统QtWidget程序在EGLFS环境下遇到的问题和解决分析。

    C/C++开发,嵌入式Linux,嵌入式开发, Qt开发, Qt5移植 等, 尽在长沙戴维营教育 ,欢迎前来学习。

时间: 2024-10-01 01:05:50

玩转树莓派- RaspBerry,Qt5交叉编译移植新手指南的相关文章

树莓派学习笔记——交叉编译工具链

0.前言 [1]为什么要使用交叉编译 交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码,但是和树莓派上的gcc工具不同,PC机上的gcc工具生成intel或amd芯片上可执行的代码,但树莓派却是arm系列的芯片,显然存在不小的差异.那么使用交叉工具链便可在PC机上开发树莓派中可执行程序. 虽然树莓派的主频可达700MHz远高于一般的嵌入式系统,但相比于PC机其性能还是差些,使用交叉工具链可节

树莓派raspberry pi配置

(1)国际化语言 树莓派初装系统之后,首次启动会出现“raspi-config”工具,如下图:(若不是初次启动,在命令模式下,请输入 sudo raspi-config 命令,即可调出此界面.若在图形桌面下,打开桌面的 LXT 客户端,输入 sudo raspi-config 命令也可以调出这个工具.   1.如上图,通过键盘上下键,将蓝条,移动到第 4 步“Internationalisation Options”,回车进入,会出现下图:   2.如上图,“Change Locale“,就是汉

树莓派(Raspberry Pi)搭建简单的lamp服务

树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql –安装mysql.apache.php sudo chmod 777 /var/www/ –设置web目录的权限 2. phpmyadmin 安装 sudo apt-get install phpmyadmin –安装后选择apache2 3.配置 sudo

安装树莓派 Raspberry PI

安装树莓派 树莓派终于到货了,是这个样子的 上面有一行日期是 Raspberry PI (c) 2011.12 下载镜像,写入SD卡 http://www.raspberrypi.org/downloads/ 选择这个镜像: RASPBIAN Debian 2014-01-07 780M的压缩包,很大的样子 似乎还有个NOOBS的安装方式,完全无感 顺便展示一下SD卡,通过查阅可用SD卡列表,似乎是支持个别的64G Class10的卡的,就像这个,编号是 Transcend SDXC 64G C

树莓派(raspberry pi)学习4: 更改键盘布局(转)

树莓派(raspberry pi)用了几次后,发现键盘老是按错,一些字符打不出来或打错 这个问题,折腾我半天.还是把心得分享一下吧 上网查,发现是键盘布局不对,树莓派(raspberry pi)是英国产品,默认键盘布局是英国(GB),我们用的键盘布局一般是美国(US)的 更改键盘布局,命令如下: sudo dpkg-reconfigure keyboard-configuration 进入后,选通用的101键PC键盘 按tab键,到OK,按Enter确定 在键盘layout选择中,选Other

树莓派学习笔记——交叉编译练习之SQLite3安装

0.前言 本博文可能并没有太多使用价值.不过为了练习而练习.在树莓派上使用SQLite有非常多的方法,安装的方法也有非常多. [1]假设使用Python,那么不必安装SQLite由于Python已经自带SQLite. [2]能够使用apt-get安装.仅仅是SQLite的版本稍低些. [3]能够使用源码安装,在树莓派上直接编译,尽管树莓派的运算速度不如PC机.可是稍等几分钟也能编译安装完毕. [4]假设你想练习一下交叉编译,请阅读下面内容吧. [本文目的] [1]怎样交叉编译源码包 [2]交叉编

树莓派(raspberry pi)学习11: 将树莓派变成一个Web服务器(转)

将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装这个LAMP系列,但Apache 和 MySql对于树莓派这个小小的机器,太重了,主要是消耗内存多\速度慢\占用磁盘大(约200M吧) 所以要安装一个轻量级的Web服务器. 经试用,推荐组合为:  nginx + php + sqlite nginx 是个轻量级的Web服务器,比Apache不差 s

树莓派(Raspberry Pi Model B+)无显示器和无线网卡上手指南

树莓派(Raspberry Pi Model B+)无显示器和无线网卡上手指南 最近买了一块树莓派板子(Raspberry Pi Model B+)平时作学习之用,只买了块裸板没有显示器和网卡(现在觉得完全没有必要去买显示器),在搭建环境的时候就遇到了一些问题,现在对在搭建树莓派环境遇到的问题做一个总结. 现在我知道的能够连接到树莓派的方法一共有四种,分别是串口终端操作.局域网.PC直连和手机USB网络共享,后面3种方法都是通过ssh的方式登陆树莓派(装好VNC-server后也可以用VNC查看

QT5.6移植到ARM三星4412

嵌入式linux之QT5.6移植 1 1.1 简介 1 1.2 移植 2 1.2.1 源码下载链接 2 1.2.2 移植准备工作 3 1.2.3 解压qt源码包 3 1.2.4 配置编译环境 3 1.2.5 删除目录 4 1.2.6 生成Makefile 5 1.2.7 编译安装 5 1.2.8 编译成功 6 1.2.9 添加环境变量 6 1.2.10 查看qmake版本 7 1.2.11 编译ARM版的QT程序 7 1.3 部署开发板运行环境 7 1.3.1 拷贝QT运行库 7 1.3.2 l