




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、Arm-Linux程序开发平台简要介绍. 3 1.1程序开发所需系统及开发语言. 3 1.2系统平台搭建方式. 4 二、Linux开发平台搭建. 5 2.1安装虚拟工作站. 5 2.2安装Linux虚拟机. 5 2.3虚拟机的一些基本配置. 7 2.3.1建立共享目录. 8 2.3.2调整桌面分辨率. 9 2.4安装软件. 11 三、Fedora-linux系统. 11 3.1控制终端的基本操作命令. 12 3.2编程工具简介. 12 3.2.1 Fedora-Eclipse CDT. 13 3.2.2 Qt库及Qt界面设计软件. 14 四、使用Eclipse CDT开发Linux程序. 15 4.1建立控制台程序. 15 4.2建立Linux窗口程序. 16 五、使用Eclipse开发Arm-linux程序. 19 5.1 Arm-linux硬件平台. 19 5.2开发控制台程序. 20 5.2.1使用Eclipse CDT编写代码. 20 5.2.2建立交叉编译环境. 20 5.2.3编译并运行程序. 22 5.3一些常用的软件介绍. 23 5.4开发arm-linux窗口程序. 24 5.4.1建立Qt交叉编译环境. 25 5.4.2编译生成可执行窗体程序. 26 六、高级Linux程序设计. 28 6.1多文件控制台项目. 29 6.2多文件Qt项目. 29 6.2.1使用Qt Designer设置界面. 29 6.2.2多文件Qt开发时的一些经典错误. 31 6.3关于makefile. 32 七、学习资料. 32前言:本文记录了自己从一个完全不懂Linux的人如何一步步学会Linux程序开发的过程。当然也希望本文能够达到它的目的,让那些和我一样没有任何基础的人也能快速入门Linux程序开发。一、Arm-Linux程序开发平台简要介绍 Arm-Linux程序的开发并不像我们以前接触的Windows程序开发那样,关于平台的搭建就繁琐很多,所以在正式进入程序开发之前先对这种开发模式进行简要介绍,让一个即使没有任何Linux开发经验的程序员也能够看懂后面的内容。1.1程序开发所需系统及开发语言 开发arm-linux程序至少需要三种系统: Windows系统。 主要用来文件传送和一些简单的文本文件编辑。这个系统其实并非必需,只是因为目前PC机上最流行的系统仍然是Windows系统,我们的很多关于PC的文件和数据的操作习惯都是在Windows系统上养成的,已经对其形成了严重的依赖,所以Windows系统扮演着的“辅助开发系统”的角色。 PC-Linux系统。 在此系统上安装arm-Linux交叉编译器后,就可以对代码文本文件进行编译,生成可在arm-Linux系统中运行可执行程序。此系统被称为“Linux宿主机”,我们对Linux程序的开发工作(包括代码编写、调试和编译生成可执行文件)基本上就是在此系统上进行的。 Arm-Linux系统。 Arm-Linux程序运行的平台。此系统的硬件载体是一块小型的嵌入式arm板,我们在Linux宿主机上开发好程序并编译生成arm-linux可执行程序后,将可执行程序文件传送到嵌入式arm板中,然后就可以在arm板上直接运行此程序了。三种系统的职能和联系如下图:“三系统”职能和关联图 关于每个系统的职能及操作还有文件如何传送交流都在后面详细介绍。 关于开发语言,因为目前购买的Arm-Linux嵌入式板提供的编译库都是C/C+的,所以一般选择C/C+进行程序设计。1.2系统平台搭建方式 关于“三系统”的搭建方式,有两种方法:三台分立的单系统机器组合或者一台双系统PC机和一台单系统Arm板机器。但是不管采用哪种组合方式,各种系统的职能都是一样的,而且都是通过FTP、Telnet或者SSH等网络协议进行文件传输交流。 “三机器”组合模式。将三个系统分别安装在三台机器上并将三台机器组建局域网。 “两机器”组合模式。在PC机上利用虚拟工作站可以同时运行两个系统,虚拟机上的Linux系统基本可以完成所有的实体PC-Linux机器的所有任务,当然也能够组建局域网。“三机器”组合模式图“两机器”组合模式图 如果开发人员对机器性能要求比较高,那么建议采用“三机器”组合模式。因为“两机器”组合模式要求一台机器运行双系统,每个系统都需要分配一定的硬件资源,可能会对每个系统运行的流畅程序都造成影响。 如果开发人员只进行一些简单的程序开发,则建议采用“两机器”组合模式。这样可以节省硬件设备的投资,而且开发环境的搭建、开发的流程等等都会简单一些。而且下面的内容都是基于这种“两机器”组合的开发模式。二、Linux开发平台搭建2.1安装虚拟工作站 目前比较流行的虚拟工作站比较多,推荐使用VM-ware WorkStation。建立虚拟工作站的目的就是为了使一台机器同时运行多个不同类型的系统,方便开发人员进行跨平台开发应用程序。 (关于VMware,可以到网上搜索到详细介绍和使用方法,在此不再赘述)2.2安装Linux虚拟机 安装虚拟机的过程和安装实体机一样,唯一的区别是,虚拟机安装是从VMware中打开并安装的。先准备Linux安装文件,一般可以到网上下载到Linux的iso安装文件,然后从VMware中安装此系统。 (关于虚拟机安装,在网上可以搜索到详细的步骤,在此不再赘述) 几点建议: 1.安装Fedora-10并选择完全安装,即把所以的包和选项都勾上。这样在安装完毕后,系统就自带了很多开发工具和相关的库,避免自己去重新进行烦琐的基本开发平台搭建。 2.在VMware中为虚拟系统配置硬件资源。建议分配硬盘空间16G,内存1G以上。因为今后主要的Linux程序开发工作是在虚拟机上进行了,所以为了保证虚拟机流畅运行,需要分配比较丰富的硬件资源。 在第一次从ISO文件中安装完毕虚拟机后,在安装目录下面会生成一系列的文件,将这些文件进行备份后,在其它机器上安装虚拟机的时候就花几个小时去从ISO中安装了,将这个目录下的文件复制到相应的目录下面(在第一次从ISO中安装的时候设定的目录相同),然后只需要从VMware中打开此目录下的文件就行了。执行VMware Workstation中的【View】-【Home】,调出Home视图,然后打开虚拟工作站系统文件。 打开后,就可以看到一个虚拟机的硬件资源配置了。这些参数有一部分是在只能在初次使用iso安装的时候配置的,比如硬盘大小。另外一些参数比如内存大小、共享目录等等可以在后期随时人工更改的。(详细设置内容,到网上可以找到很多相关内容,在此不再赘述) 两种方法的区别就是WinXp的安装盘和Ghost盘的区别吧。 安装完毕Fedora后,就可以从虚拟工作站中启动Fedora Linux系统了。系统桌面如下:2.3虚拟机的一些基本配置 在第一次安装完毕虚拟机后开启虚拟机,默认的分辨率是800*600,同时没有全能共享目录。为了获得比较好的操作界面,同时方便文件共享和转移,需要进行一些基本的配置。2.3.1建立共享目录 在同一个硬件PC机上运行的两个系统。Windows实体系统用来做一般的用途,比如联网,处理文档等等;Fedora Linux虚拟系统则用来开发Linux程序并进行编译生成可执行文件。 先需要安装vmware tools 在VMware上面,选择菜单【VM】-【Install VM tools】,然后在Linux虚拟机上会生成目录/media,同时里面产生一个rpm文件。 然后打开控制终端并su登录超级用户:cd /mediarpm ivh VMwareTools-7.8.5-156735.i386.rpmcd /usr/bin然后在/usr/bin下面看到wmware-config-tools.pl再在Teminal中输入wmware-config-tools.pl 然后一路回车下去。然后今后就可以建立共享目录。 (详细过程也可以在网上搜索相关内容) 共享目录的好处是可以将这些文件在Windows系统中提取出来,然后可以通过我们熟悉的windows系统进行网络传输和一些其它命令操作。这个设置在后面程序开发的时候会提到其使用方法。 在VMware中建立共享目录,执行菜单命令【VM】-【Settings】 然后在Linux虚拟机文件系统中可以找到对应的共享目录:/mnt/hgfs/xplinux 建立共享目录可以方便虚拟机和实体机进行文件交流。例如,我们可以将在Linux机器上编译生成好执行文件放置到共享目录中,然后可以通过Windows机器提取出来并通过网络传送到arm-linux嵌入式板上。2.3.2调整桌面分辨率 在VMware工作站中调整虚拟机桌面分辨率。一般默认是800*600,而且现在的显示器,一般是1024*768甚至更高,以我目前使用的电脑显示器为例,分辨率是1440*900。需要将虚拟机桌面分辨率进行适当调整,然后全屏,那么就可以获得比较友好的操作界面。 在VMware中启动虚拟机,虚拟机启动后的登录界面如下: 然后登录系统,设置分辨率,系统菜单: 【System】-【Preferences】-【Hardware】-【Screen Resolution】 设置好分辨率后,就可以在获得全屏状态的Linux操作界面了。2.3.2其它设置 比如设置桌面背景,系统字体,还有资源管理器的模式等等,这些可以自己去实地操作并进行熟悉。2.4安装软件 虽然Fedora已经自带了一些必要的软件,如Open Office办公软件,gedit记事本软件,Firefox网页浏览器等等。但是既然是操作系统,我们也可以安装一些我们需要的软件。比如中文输入法(如:小企鹅输入法),聊天工具(如QQ)等等。 注意:在Terminal终端中安装程序的时候需要启用su超级用户权限。三、Fedora-linux系统 Fedora-linux虚拟机安装完毕并进行基本设置后,就可以开始了程序开发环节了。在正式开始程序开发时,还需要对Linux的一些基本编程工具进行简要介绍,当然如果已经有此基础的,可以直接略过这一章。3.1控制终端的基本操作命令 执行系统菜单命令【Applications】-【System Tools】-【Terminal】,打开Terminal终端: 熟悉Windows系统的DOS操作界面的人肯定也会对此操作终端也不会陌生。通过在Terminal中输入命令,用户可以很方便地完成Linux下的一系列操作,在正式进入自主程序设计之前,用户有必要对下面一些最基本命令进行熟悉(其它的命令在项目需要的时候再到网上查找相关资料)。 文件操作命令文件/文件夹的创建、修改、复制、删除、移动等等。(如rm/mv/vi/cat等等)网络设置命令个性IP、开启FTP、开启Telnet、开启SSH等等。(如ifconfig/telnetd等等)用户管理命令系统用户的添加、删除、密码修改等等。(如,addusr/passwd等等)文件编译命令这个涉及到编译环境的建立,将在后面正式进入到自主程序设计时进行详细介绍。 虽然目前Fedora为用户提供了比较良好的操作界面,但是Linux最初是从命令行的操作系统发展起来的,很多强大的功能都是需要依靠Terminal控制终端来实现的,所以作为开发人员有必要先对这些基本命令进行熟悉并熟练操作。3.2编程工具简介 如果在安装Fedora的时候,选择的是完全安装,系统会自带很多开发工具。其中Fedora -Eclipse CDT和Qt库及相关设计器Qt Designer是我们今后开发的主要工具。当然,如果用户没有选择安全安装,则可以到网上下载到各类开发工具的安装文件,并自己进行安装。3.2.1 Fedora-Eclipse CDT 在Fedora中执行系统菜单【Application】-【Programming】-【Eclipse】 然后就可以看到Fedora Eclipse的启动画面 然后就是下面就是Eclispe的IDE环境了,有过Windows下的Java编程经验的人来说,这个界面是再熟悉不过了,完全可以直接过渡到Linux下的C/C+程序开发上来,这样就极大地减少了程序员的学习周期。 Eclipse的好处,第一就是开源,第二就是免费,第三就跨平台。 因为开源,所以可扩展性很强,Eclipse实际上就是一个万能的程序开发环境,只需要在设置中对相关语言的库进行引用并连接相应的编译器,就可以对基于任何语言的程序进行开发;因为免费,所以省去了注册软件等等琐事。因为跨平台,所以当用户进行跨平台程序设计的时候,可以极大减少学习周期。 Eclispe在Windows平台下一般都是作为Java的开发环境,用来开发Java桌面应用程序和Jsp网页应用程序甚至目前比较流行的Android手机终端软件。在Linux下面对C/C+的库编译器进行了连接后,则成为Linux下的C/C+开发环境,在Linux下安装JDK后则可以进行Linux下的Java程序设计,如果给Linux系统安装tomcat网页服务器,则可以进行Linux下的网页应用程序开发,如果给Linux安装mysql数据库服务,则可以进行数据库连接操作等等(因为目前我们的目标主要是arm-linux窗口程序开发,所以主要对C/C+进行研究)。3.2.2 Qt库及Qt界面设计软件 如果只是编写C/C+控制台软件,则只需要Eclipse CDT就完全可以解决。但是如果要进行窗体化编程,就需要引用一些开源的界面库。例如目前比较流行的Qt库。 Qt是诺基亚开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档等优点。 在Eclipse中对项目Build选项进行设置,对Qt库进行连接,然后就可以进行Linux下的Qt程序进行开发了。 因为Eclipse没有提供可视化的窗体程序设计器,所以需要借助第三方工具,QtDesigner可以很好的解决Qt的UI设计问题并编译生成对应的*.h和*.cpp文件(具体的操作步骤将在下面的内容中详细介绍)。 所谓“工欲善其事,必先利其器”,前面花了大量篇幅来介绍,都是为了“磨刀”,现在开始进入“砍柴”环节。下面将以Eclipse CDT作为开发环境来介绍Linux和arm-linux程序开发的一般方法。四、使用Eclipse CDT开发Linux程序4.1建立控制台程序 用Eclipse CDT建立基于C+的“Hello World”控制台程序。 打开Eclipse开发环境。执行【File】-【New】-【C+ Project】 然后进入到C+ Project向导,有C+的Hello World模板 点击Finish,然后Eclispe就会建立一个基于C+的HelloWorld项目,运行程序后,能够在控制台中输出“Hello World”: 说明:如果是开发控制台程序,则不需要进行任何其它设计,只需要直接编写C+代码即可,不用对编译库和编译器进行设置,Eclipse已经为我们自动完成了这些内容。4.2建立Linux窗口程序 就像在Window环境下,如果要用C+开发窗口程序,我们一般需要使用Windows API或者MFC。同样,在Linux环境下,我们可能在C+项目中引用Qt库来进行Linux下的窗口程序开发。 在完整版的Fedora中,自带了Qt的库,在目录/usr/lib下面: 系统默认自带有两个版本的Qt库qt-3.3和qt4,一般我们用qt-3.3。 编写窗口程序,我们只需要在建立了C+ Project的情况下,对C/C+ Build路径进行设置,指向qt-3.3的库即可。主要开发流程如下: 第一步:使用Eclipse CDT建立C+ Project。 第二步:设置Build路径指向Qt。在项目管理器中右击项目文件设置项目属性,在C/C+ Build的Settings的Tool Settings中进行设置。 【GCC C+ Compiler】-【Directories】添加包含的文件路径:/usr/lib/qt-3.3/include。这个是C+的编译器包含的头文件路径,因为是建立的C+ Project,所以一定要设置。 【GCC C Compiler】-【Directories】添加包含的文件路径:/usr/lib/qt-3.3/include。这个是设置C语言编译器包含的头文件路径,因为有时候C+中会考虑到兼容一些C语言的语法和关键字,所以最好也进行相关设置。 【GCC C+ Linker】-【Libraries】添加编译时引用的库路径:/usr/lib/qt-3.3/lib(注意:不要写成include了)。并设置库搜索命令参数:qt-mt。第三步:编写引用了Qt库的C+程序。第四步:运行程序。程序运行效果如下图: 总结:通过上面对Linux下面的控制台程序及窗口程序的介绍,我们已经对Linux系统下的简单程序开发流程有了简单了解。下面开始介绍arm-Linux程序的开发。五、使用Eclipse开发Arm-linux程序5.1 Arm-linux硬件平台 Arm-Linux机器采用的是飞凌嵌入式技术公司的FL2440开发板。在飞凌公司购买开发板的时候,会随开发板一起赠送的相关入门教程飞凌开发板配套教程并附有一张光盘,里面有各种写FL2440相关的开发资源。 在正式进入程序开发之前,先对FL2440开发板及arm-linux系统进行熟悉。 Fl2440开发板:熟悉Bootloader的使用方法、学会烧写内核、烧写文件系统等等。 Arm-linux系统:熟悉利用一些文件系统和网络设置相关的命令。如果你对Linux命令已经有了一定了解,那么arm-linux上的命令也基本一样。(详细操作过程请参考飞凌开发板配套教程一书)5.2开发控制台程序 主要开发流程图如下: 在早期的开发环境方式中,是先用文本编辑器编写c或者cpp文件,然后再直接在Linux机器上通过交叉编译命令,编译代码文本文件并生成可执行程序,然后将可执行程序传送到arm-linux板上,然后就可以在arm-linux机器上运行程序了。 现在的开发模式和早期的开发模式一样,只是在编写代码的工具上进行了改进。早期编写代码的工具只要是能编辑文本的软件就可以,甚至在Linux中通过终端的vi命令就可以搞定,Linux机器的职能仅仅是编写代码和编译代码。现在则使用Eclipse CDT,可以在Linux机器上编写C/C+代码并进行调试,Linux机器基本上可以模拟arm-linux系统上除了一些硬件相关度高的应用程序(如驱动程序)之外的绝大部分其它程序的运行环境。5.2.1使用Eclipse CDT编写代码 其实和用Eclipse CDT编写Linux环境下的控制台程序是完全一样。除了在一些特别的场合,比如编写驱动程序,需要注意差别外,其余的功能的实现方法基本上一样。 这方面属于程序设计的基本功,需要长期学习和积累,所以在此不再多述。5.2.2建立交叉编译环境 虽然生成程序的源码是一样的,但是在Linux机器上编译生成的可执行文件是不能在arm-linux系统上运行的,需要用arm-linux专用的编译器进行编译后,才能生成可在arm-linux系统上运行的可执行文件,当然此时应用程序又显然不能在Linux系统上运行了。 将交叉编译工具cross-2.95.3.tar.bz2(可以到网上下载,也可以到开发板附带的光盘资源中找到)通过共享目录传送到Linux系统中,然后在Linux系统终端中先进入其文件目录,然后执行解压命令:tar xjvf cross-2.95.3.tar.bz2 然后在/usr/local/arm文件目录下可以看到解压后的2.95.3的库了,或者如果你解压的是cross-3.4.1.tar.bz2的版本,那么将会在对应目录下生成3.4.1的目录。 然后设置环境变量。因为Linux机器上存在不止一种编译器,为了避免环境变量冲突,最好新建一个账号,比如新建账号arm-linux-gcc,然后在对应的账号目录中找到.bash_profile文件,设置环境变量,编辑.bash_profile,在最后一行增加路径(vi打开文本文件,按i表示insert修改文本文件,然后Esc退出insert模式,再shift zz表示保存退出文件,详细的命令介绍可以到网上查阅相关资料):export PATH=/usr/local/arm/2.95.3/bin:$PATH 可以通过echo $PATH来查看环境变量是否设置成功:5.2.3编译并运行程序 在编辑好了代码文件并建立好了交叉编译环境后,就开始编译代码生成可执行程序,并移植到arm板上运行程序。 在Linux系统的终端中通过输入arm-linux-gcc/arm-linux-g+来编译C/C+文件。例如,我们对前面编写的最简单的CppHelloWorld.cpp文件进行编译:arm-linux-g+ CppHelloWorld.cpp o CppHello 然后在对应目录下会生成一个可在arm-linux系统上运行的应用程序CppHello。 然后通过SSH服务和FTP服务,将可执行文件从Linux文件系统网络传送到arm-linux文件系统(在此用到了两个小软件SSH Secure和LeapFTP,在后面再对软件的功能进行一下简要介绍)。 然后在Windows机器上远程登录arm-linux系统开发板,并控制程序运行 注意:需要先通过chmod +x CppHello来告诉系统此文件是可执行文件,然后再通过./CppHello来运行程序。 我们可以看到程序运行的结果:在屏幕上打印出一行字“Hello World”5.3一些常用的软件介绍 在上面介绍的一些操作中,在进行文件传送的时候用到了一些软件,在此进行简要介绍。 LeapFtp一个基于Ftp协议的文件互传软件。一般情况下,我们对arm-linux机器上开启Ftp服务,然后就可以实现Windows机器和arm-linux机器之间文件互传。SSH Secure File Transfer Client一个基于SSH协议的文件互传软件,可以实现FTP的功能。虽然Linux机器和Windows机器之间可以通过共享目录进行文件交互,但是因为共享目录实际上相当于Linux机器的一个虚拟的外接设备,在每次编写代码保存后,系统都会重读一次,给操作上造成一点小麻烦,所以建议使用SSH进行文件传送。SSH Secure Shell Client一个基于SSH的远程登录软件,可以实现telnet功能。因为Fedora默认关闭了telnet功能,而采用更安全的SSH协议来实现telnet的相关功能。 三系统之间的主要网络架构如下: 注意: 1.如果arm-linux系统的ftp和telnet连接不上,一般情况下是arm-linux默认没有开启相应的服务或者默认ip和windows机器不在同一网段。可以通过串口线将arm板连接到电脑上,然后打开超级终端,输入命令vsftpd&开启ftp服务,输入命令telnetd开启telnet服务,ifconfig eth0 6设置IP到同一网段。 2.如果Linux系统的SSH连接不上,则一般情况下是Linux系统开启了SSH的防火墙,则只需要在Linux系统中对防火墙进行相关设置,关闭针对SSH的防火墙。【System】-【Administration】-【Firewall】,然后勾选全能SSH。 还有一些其它软件,比如小组协作时候,需要使用SVN进行代码管理;还有远程桌面VNC Viewer,可以进行远程桌面控制(但是效果不太好,桌面显示的延时好像比较严重)等等。5.4开发arm-linux窗口程序5.4.1建立Qt交叉编译环境 在Linux系统中新建目录/root/yizhi,然后将已经编译好的arm-QT库复制到此目录下面。 然后将上面那六个tar.gz压缩文件解压到/root/yizhi目录。 在进行arm-linux下的Qt编译的时候,也涉及到环境变量设置问题,所以我们也最好再新建一个账户,专门用于编译arm-Qt程序。 例如,在Linux系统终端中添加用户zsm,然后进入到/home/zsm中,对.bash_profile进行修改,设置环境变量: 在命令终端中ls a 显示隐藏的所有文件 找到.bash_profile,输入:gedit .bash_profile & 用geidt打开此文件后,在最后面添加下面的环境变量设置:export PATH=/root/yizhi/qtopia-free-2.2.0/qtopia/bin:/root/yizhi/qtopia-free-2.2.0/tmake/bin:/root/yizhi/qtopia-free-2.2.0/qt2/bin:/usr/local/arm/2.95.3/bin:$PATHexport QTDIR=/root/yizhi/qtopia-free-2.2.0/qt2export QTEDIR=/root/yizhi/qtopia-free-2.2.0/qtopia/export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATHexport CC=/usr/local/arm/2.95.3/bin/arm-linux-gccexport TMAKEDIR=/root/yizhi/qtopia-free-2.2.0/tmakeexport TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g+ 设置好后最好重新登录此账号,然后在终端中输入echo $PATH来检验环境变量是否设置成功: 如果出现上面的输出,则表示arm-linux平台下的Qt交叉编译环境的环境变量已经设置成功。接下来就可以进行Qt程序开发了。5.4.2编译生成可执行窗体程序 在3.2节中已经写好了一个单文件的项目QtHello,并在项目的src目录下生成了一个QtHello.cpp文件,然后我们要做的就是利用arm-linux下的Qt编译器对其进行编译。 编译Qt窗体项目比编译普通控制台项目要稍微麻烦一点,需要自己写makefile来建立编译规则,编译如上的QtHello.cpp的makefile有如下模板: # Makefile for building hello# Generated by tmake at 20:58, 2011/04/14# Project: hello# Template: app# Compiler, tools and optionsCC = arm-linux-gccCXX = arm-linux-g+CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUGCXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUGINCPATH = -I. -I$(QTDIR)/includeLINK = arm-linux-gccLFLAGS =LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lm -lqteMOC = $(QTDIR)/bin/mocUIC = $(QTDIR)/bin/uicTAR = tar -cfGZIP = gzip -9f# FilesTARGET = QtHelloHEADERS = $(TARGET).hSOURCES = $(TARGET).cppOBJECTS = $(TARGET).o DIST =INTERFACE_DECL_PATH = .# Implicit rules.SUFFIXES: .cpp .cxx .cc .C .c.cpp.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $ $.cxx.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $ $.cc.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $ $.C.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $ $.c.o:$(CC) -c $(CFLAGS) $(INCPATH) -o $ $# Build rulesall: $(TARGET)$(TARGET): $(OBJECTS)$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)dist:$(TAR) hello.tar $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST)$(GZIP) hello.tarclean:-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET)-rm -f * core# Sub-libraries# Combined headers# Compile$(TARGET).o: $(TARGET).cpp 用zsm账号登录(因为关于arm-Qt库的编译环境变量是在此账号中设置的),然后执行如下步骤:1.将makefile模板文件放置到src目录下面2.用eclipse或者其它文本编辑器,修改makefile里面的TARGET一项为当前项目名称3.打开Teminal控制终端,进入到src目录,输入make4.然后会在src目录下面生成一个指定名称相应的QtHello文件,这个就是arm目标板上的运行程序了。5.将QtHello文件传送到arm板并运行程序(详细操作方法在4.2.3节中有介绍)。 在Windows机器上远程登录arm板,控制程序运行,然后可以看到arm板上运行的结果了。六、高级Linux程序设计 前面所介绍的不管是控制台还是窗体程序,都属于单文件项目的范围。而当程序的功能比较复杂时,则往往需要很多模块和文件,这样在向arm-linux上移植程序时会更加繁琐一些,需要开发人员自己写makefile,建立多文件的编译规则。 因为我对此没有进入深入一点的研究,所以只能提供下大致思路和在开发程序时遇到的一些常见问题及解决方案。如果今后有机会有时间的话,则会对makefile进行深入一点的研究,最好是能以Eclipse自己生成的makefile模板为基础进行简单的修改,然后就可以编译生成arm板上的可执行程序。6.1多文件控制台项目 多文件的控制台程序的makefile可能会容易一些,自己也没有研究过,以前在使用Magic C+编写C+控制台程序的时候,只需要对Magic C+生成的makefile模块中的编译器进行修改就可以轻松为多文件生成基于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 排水沟穿越道路施工方案
- 水污染治理工程施工方案
- 濮阳拉森钢板桩施工方案
- 辽宁民宿文旅施工方案
- 幼儿园获奖公开课:小班数学《草裙舞》教学设计
- 灯箱广告改造施工方案
- 正安建筑打桩施工方案
- 数控加工工艺与编程技术基础 教案 模块三 项目二 综合件的加工(3-4)
- 水稻种植中多发病虫害的发生特点及针对性绿色防控技术具体分析
- 【专精特新】折叠屏手机行业市场份额证明材料(智研咨询发布)
- 流体压强与流速的关系市公开课一等奖说课公开课获奖课件百校联赛一等奖课件
- 第25课+中华人民共和国成立和向社会主义的过渡+课时作业 高一上学期统编版(2019)必修中外历史纲要上
- 20240912工业互联网及其驱动的制造业数字化转型
- 人教版思想政治必修二期末测试卷附参考答案
- 2024-2025学年初中信息技术(信息科技)七年级上册粤教清华版教学设计合集
- 2024小米在线测评题
- 水果店员工手册的标准模板
- 雾化吸入疗法合理用药专家共识(2024版)解读
- HAF102-2016核动力厂设计安全规定
- 2024年济南广播电视台招考电视工作人员高频500题难、易错点模拟试题附带答案详解
- 2024年云南省中考数学模拟试题(附答案解析)
评论
0/150
提交评论