交叉编译安装ARM平台上的Qt
一、宿主机环境搭建:
编译需要x11库的支持,在Ubuntu下安装命令:
sudo apt-get install libx11-dev libxext-dev libxtst-dev
二、下载源码包:qt-everywhere-opensource-src-4.7.0.tar.gz
三、解压源码包,查看Qt源码中是否有适合我们编译平台的配置文件,进入到源码目录下的qws目录下。ls 看一下,有一个适合我们的配置,就是linux-arm-gnueabi-g++ ,如果没有,就自己建一个目录,然后从别的目录下拷贝这两个文件
qmake.conf
qplatformdefs.h
进入到linux-arm-gnueabi-g++目录,看一下qmake.conf 的内容,如下:
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip
正确,我们就使用这个配置,如果不正确,可以改成自己的编译器的名字。
四、配置:
可以运行./configure --help 查看配置帮助
配置命令:
./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -qt-libtiff -qt-libmng -no-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -qt-mouse-linuxinput -no-neon -qt-libjpeg -qt-libpng
可以将配置编写进脚本文件。
五、执行make –j4
-j参数指定编译时的线程数,make –j不限制线程数。
六、执行make install。
默认安装路径为:/usr/local/Trolltech/QtEmbedded-4.7.0-arm
七、配置环境变量(vim /etc/profile):
#!/bin/sh
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm
export QMAKEDIR=$QTDIR/qmake
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QMAKEDIR/bin:$QTDIR/bin:/opt/arm-linux-gcc/bin:$PATH
export QMAKESPEC=qws/linux-arm-g++
使环境变量有效的方法:1、注销,重新登录。2、source /etc/profile(只在本次终端中有效)
测试搭建环境:qmake –v
QMake version 2.01a
Using Qt version 4.7.0 in /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib
出现上述文字则编译成功。
八、交叉编译。
编写Hello World程序,保存为hello.cpp。
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();
}
执行如下命令:
1、 qmake –project(生成工程文件)
2、 qmake (生成Makefile)
3、 make (编译工程)
九、开发板环境搭建及测试运行
1、在开发板上新建目录/usr/local/Trolltech/QtEmbedded-4.7.0-arm,再把Ubuntu相同目录下的lib和plugins文件夹拷贝到该目录下。
2、将libstdc++.so.6.0.9 和libz.so.1.2.3(这两个文件在交叉编译器的lib目录中) 传送到开发板的 /usr/local/lib 目录下。(在这个步骤中,有的资料拷贝librt,具体操作命令如:#cp /usr/local/arm/4.5.1/arm-none-linux-gnueabi/libc/lib/librt-2.11.1.so /root/rootfs/lib
#cd /root/rootfs/lib
#chmod 777 librt-2.11.1.so
#ln -s librt-2.11.1.so librt.so.1)
3、设置开发板环境变量:
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib:/usr/local/lib
4、测试运行:第八步中生成的文件下载到开发板中,执行命令:./hello –qws测试程序。
附:开发板环境详细配置:
export QWS_DISPLAY=:1
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO="LinuxInput:/dev/touchscreen"
export QT_QWS_FONFDIR=$QTDIR/lib/fonts/
export QT_PLUGIN_PATH=$QTDIR/plugins
遇到问题总结:
1、 开发板上的程序不能显示中文汉字,可能是环境变量没有设置QT_QWS_FONFDIR(猜测,没有测试)。
2、 在编译有数据库的程序时出错,说没有发现QsqlDatabase之类的,在生成的*.pro文件中加入QT += sql编译通过了。之前,还怀疑是在配置编译Qt时没有添加sql功能,还在配置中加入了-qt-sql-sqlite语句重新编译了Qt。。。
交叉编译安装ARM平台上的Qt的更多相关文章
- Ubuntu/Debian交叉编译安装ARM平台版本的ffmpeg
1 准备工作 (1)libmp3lame库 下载: wget http://downloads.sourceforge.net/lame/lame-3.99.tar.gz 解压 编译:./con ...
- ARM 平台上的Linux系统启动流程
开始学习嵌入式开发就一直在使用Linux系统作为学习的平台,到现在无论是PC机还是ARM开发板都已经能顺利地跑起了Linux系统,但是对Linux 的启动流程还是不甚了解.于是开始各种百度谷歌,当然看 ...
- Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...
- 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...
- QT5.7交叉编译安装到arm(好多系列文章)
以下采用的系统为ubuntu16.04,开发板为迅为iTOP4412,4.3寸屏. 下载qt5.7源码qt-everywhere-opensource-src-5.7.0.tar.xz http:// ...
- linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本
最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...
- linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本 以及x64上编译qt
最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...
- Linux平台上DPDK入门指南
1. 简介 本文档包含DPDK软件安装和配置的相关说明.旨在帮助用户快速启动和运行软件.文档主要描述了在Linux环境下编译和 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节. 1.1. ...
- 运行在TQ2440开发板上以及X86平台上的linux内核编译
一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...
随机推荐
- 转载:spring ,struct2 在 web.xml中的配置
转载网址:http://blog.sina.com.cn/s/blog_4c6e822d0102dv63.html <!-- Struts2 need begin--> <filt ...
- PHPExcel用法有感
今日项目需求导出excel.我用最简单的header头方式导出了,但是需求部门退回了,说不满足他们的需求,需要我按照他们的模板来导出. 然后想到了PHPExcel,没用过,走了不少弯路. 1.去官网下 ...
- HTML&CSS基础学习笔记1.19-DIV标签1
div标签 这里我们要认识一下HTML里使用非常多的的一个标签:<div>. <div>标签定义文档中的分区或节(division/section),他可以把文档分割为独立的. ...
- HTML&CSS基础学习笔记1.2-HTML的全局属性?
HTML元素都有属性,下面的这些全局属性是所有的HTML元素都可以使用的. 常见的有: HTML元素也有一些本身自己独特的属性,我们以后的笔记中有机会,会再为大家介绍哦. 下面是代码测验,具体的内容可 ...
- 对CNN模块的分析
对 CNN 模块的分析,该论文(Systematic evaluation of CNN advances on the ImageNet)已经做过了,里面的发现是非常有帮助的: 使用没有 bat ...
- java实现双端链表
PS:双端链表(持有对最后一个节点的引用,允许表尾操作与表头操作等效的功能) public class DoubleLinkedList { //节点类 static class Node { pub ...
- Commons Beanutils使用setProperty() - 就是爱Java
有时不能只依靠getter/setter操作bean,如:需要名字动态取得的,或是访问bean内的field,甚至是集合或数组内bean的field,利用反射机制对bean的field进行处理,这时候 ...
- HADOOP再进阶:本地Yum软件源安装Cloudera Manager 5
参考URL: http://blog.csdn.net/yangzhaohui168/article/details/30118175 http://blog.csdn.net/yangzhaohui ...
- STARTUP.A51详解
STARTUP.A51 这个文件有什么用,有必要添加到工程吗? 如果不添加"startup.a51"文件,编译器就会自动加入一段初始化内存以及堆栈等的代码,这时的内存初始化部分你就 ...
- 轻量级GUI enlightenment
嵌入式和LINUX PC都可以使用: https://www.enlightenment.org/start