CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 29425|回复: 16

PC交叉编译QT心得

[复制链接]
发表于 2014-7-15 11:33:12 | 显示全部楼层 |阅读模式
虽然可以直接在板子上跑QT,但是还是太慢了,不够pc用的爽,于是就尝试把qt库交叉编译到板子上了,这样开发速度会快好多。

主机是 ubuntu12.04 x64,  编译器GNU g++  以及 arm-linux-gnueabihf-g++,板子cb2(其实什么板子都可以),
板子系统 lubuntu sever版,为什么不用desktop版,后面会说到。

1、下载qt库以及qt creator:
http://qt-project.org/downloads
在这个网址下载,我下的是


2、编译qt库
这里要编译两个库,一个是为了在pc上运行用的,另一个是交叉编译到板子上跑用的,步骤都一样。
1)解压后进入解压目录
2)进入如下目录:

找到这个conf文件,打开:

把编译器名称修改一下:

保存退出。
回到解压目录下:
3)
用终端进入解压目录,然后输入:
sudo ./configure -embedded arm -xplatform qws/linux-arm-gnueabi-g++-little-endian -opensource\
-host-little-endian -confirm-license -nomake demos-nomake examples

这里-embedded选项是声明交叉编译平台是arm,后面的-xplatform是指明交叉编译器的conf,就是我们刚才修改的那个,其实在qws文件夹下面随便找一个进去修改那个conf文件也行,自己新增一个文件夹也可以,不过貌似要是linux开头的。如果不指定xplatform的话就会默认用GNU g++。后面的选项,小端什么的就不用管了,当然选开源的opensource,然后节省时间就不编译demos什么的了。
等了好久好久。。。。。。。。。。。。
结束之后就很简单了:
sudo make
sudo make install
然后就没有然后了~交叉编译的库已经弄好了~默认安装在/usr/local/Trolltech/QtEmbedded-4.8.6-arm/下面

4)编译在pc上用的qt库
跟上面几乎一样,只是configure的时候有区别:
sudo ./configure -prefix /usr/local/qt-4.8.6-desktop-opensource -confirm-license -nomake demos\
-nomake examples

那个-prefix选项可以指定安装目录,大家找个喜欢的吧。这里就是默认用本地的g++来编译了,所以是pc能用的库,后面的都一样了。
编译一个要差不多2个小时,等的好辛苦。。。。。。。。

3、安装qt creator
直接运行下载下来的文件就好~

4、配置qt creator

tool->options,新增一个编译器,就是我们的arm-linux-gnueabihf-g++


把我们编译的两个qt库都加进去


默认的那个kit就是我们的desktop,选择对应的qt库就好了。


新增一个cubie的kit,就是跑在板子上的,保存设置。


下面来new 一个project,选择如上图。


两个kit都选上,因为desktop的那个用来在本地测试,cubie那个不能在pc上跑,只好在desktop那个测试没问题后编译成cubie的再把程序弄到板子上去。


来一个最简单的,拖个button上去吧,编译运行:

好了,在qt creator的左下方有个显示器一样的图标,可以选择编译成desktop还是cubie,测试没问题了我们就换成cubie的。
然后要跑到板子上了。

5、跑在板子上的qt
首先要把运行库弄到板子上,方法最简单的一个是把/usr/local/Trolltech/QtEmbedded-4.8.6-arm/ 的所有文件都复制到板子上的相同目录下,注意一定要是“相同目录”!!
另一个方法,如果板子上磁盘空间不够,那么就做一个镜像吧,先用终端进入到上面那个目录:
dd if=/dev/zero of=qt_lib_ext4.img bs=1M count=180
mkfs.ext4 -F qt_lib_ext4.img
chmod go+w qt_lib_ext4.img
mount qt_lib_ext4.img -o loop /mnt
cp -rf /usr/local/Trolltech/QtEmbedded-4.8.6-arm/* /mnt
chmod go-w qt_lib_ext4.img
然后到时候记得把这个镜像挂到 /usr/local/Trolltech/QtEmbedded-4.8.6-arm/ 下面,因为去看工程的makefile会发现动态链接库的路径是这个。当然180M好像很大,貌似是因为我当时忘了不编译demos和examples,大家看实际情况大小吧。


然后就把刚才编译好的文件,我的工程叫test1,编译生成的文件夹是build_test1_cubie_Debug,把整个文件夹拷过去就好。下面是sever版的lubuntu上的演示结果:



后面的大家想怎么玩就怎么玩啦,总之在pc上开发是爽多了~
编译qt的时候还有好多好多参数,我也还没研究呢,要继续学习才行!

之前我试过在desktop版的lubuntu上跑这个程序,但是没有窗口显示出来,也没有报错,不知道为什么,可能一些运行时的参数设置吧,换成命令行界面也不行。后来尝试了sever版的就可以了,不知道是不是原先的图形界面的接口问题,还是个疑问。由于我本来就是要弄一个图形操作界面,也就没去深究这个问题了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| 发表于 2014-7-15 11:35:07 | 显示全部楼层
最后一张图不知怎么就弄上去了,大家忽略之。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-7-15 18:28:50 | 显示全部楼层
赞一个!
回复 支持 反对

使用道具 举报

发表于 2014-8-5 17:46:48 | 显示全部楼层
为什么我的交叉编译后执行的结果是 cannot execute binary file 这是什么原因呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-6 14:30:37 | 显示全部楼层
ericwang 发表于 2014-8-5 17:46
为什么我的交叉编译后执行的结果是 cannot execute binary file 这是什么原因呢? ...

有图吗?具体你的操作是怎样的呢?
回复 支持 反对

使用道具 举报

发表于 2014-8-6 20:34:11 | 显示全部楼层
这个结果是在板子上出现的,没有截图。我用的是ubuntu12.10操作系统,creator是5.3最新版本,PC机和ARM上的库都是4.8.6版本(按照您的教程,在PC上面编译了2遍)。之后全部把/usr/local/Trolltech目录下的全部文件tar包复制到CB2的相同/usr/local/目录下并解压,后配置了环境变量。在CB2上运行结果就是cannot execute binary file
回复 支持 反对

使用道具 举报

发表于 2014-8-6 20:38:50 | 显示全部楼层
我查了下说是操作系统  http://blog.csdn.net/kenctrl/article/details/11470757 不知道我操作的哪出问题了。
回复 支持 反对

使用道具 举报

发表于 2014-8-7 08:51:45 | 显示全部楼层
stevehuang 发表于 2014-8-6 14:30
有图吗?具体你的操作是怎样的呢?

已回复,谢谢您及时回答。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-7 15:28:33 | 显示全部楼层
ericwang 发表于 2014-8-6 20:34
这个结果是在板子上出现的,没有截图。我用的是ubuntu12.10操作系统,creator是5.3最新版本,PC机和ARM ...

qt creator我用的是3.2.1的版本,应该是最新的,qt的最新版本是5.3 。qt creator在编译的时候要选择套件呀,你是不是选择了desktop套件,而没有选cubie套件?cannot execute应该是你的代码是用x86编译的,不是用交叉编译器。在creator的左下角有一个电脑显示屏一样的图标,点一下会选择构建的目标套件,要选cubie-release。编译后的文件夹应该是build-xxx-cubie-Release。希望能帮到你~
回复 支持 反对

使用道具 举报

发表于 2014-8-26 13:13:47 | 显示全部楼层
这个必须赞一下 !
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 19:31 , Processed in 0.027825 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部