arm嵌入式linux qt入门问答,很经典!!

2019-07-13 05:06发布

原文地址:http://www.cnblogs.com/elect-fans/archive/2012/03/25/2416951.html
很多新手刚开始学习ARM的时候都会遇到下面类似的问题,由于很多基本原理都不会,所以很容易被表面问题迷惑,相信看完下述问答的新手一定会对ARM有一个非常清晰的印象。 1、请问qt-x11、qt-embedded、qtopia-core这三个有什么区别和联系
2、如果arm上没有qt库,我在pc上通过交叉编译了一个qt应用程序,能直接下载到arm上运行吗?
3、qmake和make有什么区别和联系吗?
4、qt-embedded-linux-opensource-src-4.4.3.tar.gz这个名字是不是说明这个版本是符合qt4.4.3的qt库,只不过能用来交叉编译即将在arm上运行的qt应用程序源码?
5、用什么可以仿真arm开发板环境来测试自己交叉编译后的程序是否可以移植成功呢?每次通过实际下载来调试程序好麻烦呐
6、我担心第二个问题的答案是“不能”,这样的话可能就必须预先下载qt库到arm上,而qt4是很大的,这样会不会很困难?而我只希望自己的程序能够在arm上正常运行,是不是可以把qt库减小到只留下自己程序需要的库函数呢?或者干脆将需要的库函数源码和自己的qt程序一起交叉编译后再下载到arm中。
7、交叉编译环境的各种工具版本的对应问题好烦!不知道cross-3.4.1和cross-3.4.4能适应哪些qt库,同时还牵扯到linux内核版本问题,真是痛苦!
8、我现在手中有个s3c2440A的arm开发板,是飞凌OK2440III型号,光盘丢了,很多开发工具软件找不到了,它里面提到一个交叉编译环境链式2.95.3、3.3.2、3.4.1就是不知道这个三个是指哪三个工具,第一个好像是cross-2.95.3。
9、这个开发板里的linux系统集成了qtopia-free-src-2.2.0,这个应该是属于qt2吧?那么我在pc上装的qt-embedded-linux-opensource-src-4.4.3.tar.gz的环境写的qt4程序是不是就不能在这个arm开发板上运行了?
问题补充: 
好不容易将Qt-embedded版本装在pc上了,但是为了能将应用程序下到arm上去测试,发现qt应用程序需要动态链接qt库,而arm上没有这个,只有个低版本的qtopia,所以决定将应用程序进行静态编译,结果需要先在PC上静态编译qt。
好吧,那就静态编译吧。
结束后终于可以静态编译应用程序了,发现动态编译的应用程序只有15K,而动态编译的却有8M。
没关系,只要能运行也就罢了。
但是静态编译时成功的,但是下到arm上去运行却说:line 1:syntax error:"(" unexpected这样的错误,真要晕倒了!该怎么办呢? 
另外我想问一下,这个静态交叉编译的qt4应用二进制文件可以在PC的什么平台上测试呢?每次下到arm中测试好麻烦啊! 
如果是动态编译,请问用什么命令可以查看qt程序调用了哪些库函数,以便在下载时可以将库函数一并下到arm中


-------------------------------------------------------------------------- 华丽的分割线 ----------------------------------------------------------------------------------------


1、qt-x11是建立在X11图开库上的,X11图形库又是建军在FRAMBUFFER上的,FRAMBUFFER是linux内核的图形库,X11系统资源需求大,不能用于嵌入式,所以qt-embedded产生了,它不是建立在X11图形库上的,它是直接建立在FRAMBUFFER上的,占系统资源极少,可以在嵌入式上使用。qtopia-core这个概念是相对于qtopia提出的。它就是qt-embedded。而qtopia是QT公司的一个嵌入式桌面系统,目前已停止开发了。
2、如果arm上没有qt库,不能运行QT程序,必须把相应的QT库按装到ARM板上。
3、qmake产生makefile,make根据makefile调用gcc进行编译。
4、qt-embedded-linux-opensource-src-4.4.3.tar.gz是用在嵌入式上的QT开发库。用法与qt-4.4.3-x11版的用法一样。
5、没有办法仿真,只能先进行qt-embedded的移植工作。但是开发qt-embedded程序时,到是可以在PC机上先用qvfb仿真调试的。
6、qt-embedded库先交叉编译,完成后下载到开发板上,以后开发应用程序时,qt库不用再下载的。
7、写qt程序需要4.0版以上的交叉编译器。网上可以下载现成。
8、这是三个不同版本的gcc交叉编译器,都老了。目前至少应该使用gcc 4.0以上的。
9、肯定是不行的。


-------------------------------------------------------------------------- 华丽的分割线 ----------------------------------------------------------------------------------------


使用的是arm+linux开发板,是要把linux系统嵌入到arm芯片内,然后再用c编程运行吗?
答:
用Linux你可以不支付license费用,那是自由软件。
windows的操作系统就不能用来开发arm吗?
可以,但很多资料你需要购买。包括开发软件的API。arm(一颗芯片)和一个用户的操作系统间到底是什么关系呢?硬件和软件的区别。就像P4和XP。
有人做的一个Embest IDE就像是一些常用的单片机的IDE一样,装在windows的系统下,也可以用来做arm的开发啊,好像就是在电脑上装一个IDE,然后连上仿真器,再连上开发板就可以了,为什么那么多人要采用linux系统呢?
如果没有windos高昂的许可费用和底层故作高深的垃圾一样的代码,而且还开放源代码,基本上就和Linux差不多了。这就是为什么用Linux开发嵌入式。
在linux系统下又需要什么样的IDE呢?
一般用vi或emacs,大一点的有eclipse,anjuta,kdeveloper... 不过开发Linux的人一般都不用大型的IDE软件。xp下的超级终端和minicom的功能差不多,但用起来更方便。”这句话到底是什么意思?具体怎么用?这话是不正确的,minicom的功能基本上覆盖了你对串口的所有控制,而超级终端仅仅是个儿童版。
具体用法你装完Linux后,用man看一下就可以了。本机编译工具集编译的代码只适用本机(大多数PC是X86)运行,对于ARM开发者来说,需要一个能在本机编译、但编译却生成ARM运行代码的一套交叉编译工具集。
因此,选择一个与本机工具集相异的特定含义的目标名称是非常有必要的。arm-linux:是个比较受欢迎的名称,支持ELF格式(ARMLinux标准)。除Acorn用户使用老的a.out格式外。arm-linuxaout:选择a.out格式,ARMLinux基本不支持它了。arm-aout、arm-coff、arm-elf、arm-thumb:其它的格式名。你也可以在其中插入版本信息,比如:armv2:ARMV2核,支持26bit模式。armv3l、armv3b:ARMV3核,小字节(l)或大字节(b)模式。armv4l、armv4b:ARMV4核,如:StrongARM、ARM7TDMI、ARM8、ARM9。同样也支持小字节(l)或大字节(b)模式。armv5l、armv5b:ARMV5核,如:XScale核ARM10。同样也支持小字节(l)或大字节(b)模式。选择什么名称对定制ARM交叉编译工具集没太大的影响,但用大家常用的名称会比较好些。