- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统基础-第九讲-嵌入式交叉编译教程
嵌入式系统基础;嵌入式交叉编译基础;交叉开发环境:宿主机+调试通道+目标机“在谁的上面编写运行在谁上的程序的问题”; 交叉编译就是在一个平台上生成另一个平台上的可执行代码。
平台分别指的是主机平台Host和目标平台Target。
就我们在ARM平台上移植Linux来说,Host是一台一般的PC机,它通过串口或网络接口与Target通信; Target是arm-linux平台(这里说的arm指的是平台所使用的CPU是ARM9处理器,linux指的是运行的操作系统是Linux)。
我们在Host上开发程序,并在这个平台上运行交叉编译器Cross Complier,编译我们的程序,而由Cross Complier生成的程序将在Target上运行。; 需要交叉编译的原因:
首先,在项目的起始阶段,目标平台尚未建立,因此需要做交叉编译,以生成我们所需要的Boot loader以及kernel(因为Bootloader和kernel的源码需要经过交叉编译后才可以在目标平台上运行);
其次,当目标平台能启动之后,由于目标平台上资源的限制,当我们编译大型程序时,依然可能需要用到交叉编译。
;NFS服务可以使网络上的同为Linux或Unix系统主机共享文件系统(Net FileSystem)。
NFS可以将远程文件系统载入在本地文件系统下。远程的硬盘、目录和光驱都可以变成本地主机目录树中的一个子目录。
载入后与处理自己的文件系统一样使用即可。不只方便,也节省了重复保存文件的空间、传输文件的时间及网络带宽。;NFS特点
NFS系统也使用C/S体系结构,就是有服务器端与客户端
服务器端提供共享的文件系统,必须把文件系统输出(export)出去
客户端则要把文件系统载入到自己的系统下
使用NFS,需要在服务器端设置输出,在客户端设置载入
;NFS服务器端配置
(1)关闭防火墙
(2)配置共享目录
----客户端主机IP范围
(3)主机IP
(4)启动NFS服务;混合开发模式的必要:
由于初学者对Linux系统不是很熟悉,通常会采用Windows下强大的编辑工具,通过共享再在Linux系统下进行编译、调试等工作。
(1)VMware虚拟机设置共享
(2)SSH客户端软件
(3)Windows下的文本编辑工具;(1)VMware虚拟机设置共享-1;(2)SSH客户端软件;(3)Windows下的文本编辑工具;gcc(GNU C Compiler)
能将C、C++语言源程序、汇编语言程序和目标程序编译、连接成可执行文件。
是GNU推出的功能强大、性能优越的多平台编译器,可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。 ;gcc的执行过程
使用gcc由C语言源代码文件生成可执行文件的过程要经历四个相互关联的步骤∶
1、预处理(也称预编译,Preprocessing)
——对头文件(include)、预编译语句(如define等)进行分析[预处理器cpp]
2、编译(Compilation)
——将预处理后的文件转换成汇编语言,生成文件.s[编译器ccl]
3、汇编(Assembly)
——由汇编变为目标代码(机器代码),生成.o的文件[汇编器as]
4、连接(Linking)
——连接目标代码,生成可执行程序[链接器ld] ;四个相互关联的步骤∶源文件.c
1、.c源文件
2、生成.i文件
3、生成文件.s
4、生成.o的文件
5、生成可执行程序;GNU C 的使用
基本语法
gcc [options] [filenames]
说明:
在gcc后面可以有多个编译选项,同时进行多个编译操作。
当你不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件。 ;gcc选项
-o选项
你能用 -o 编译选项来为将产生的可执行文件指定一个文件名来代替 a.out。
例:gcc –o count count.c
-c选项:告诉GCC仅把源代码编译为目标代码, 而取消连接的步骤。缺省时GCC建立的目标代码文件有一个.o的扩展名。
例:gcc –c test2.c
-E 只运行 C 预编译器。
-S 编译选项告诉 gcc 在为 C 代码产生了汇编语言文件后停止编译。;-include file
功能相当于在代码中使用#include
例子用法:
gcc -o example example.c -include /usr/include
/stdio.h
-I
用来指定头文件目录.
/usr/include目录一般是不用指定的
您可能关注的文档
最近下载
- 最新完整版雨污分流改造工程施工组织设计方案.pdf
- 河北女子职业技术学院辅导员考试试题2024.docx VIP
- 四库全书基本概念系列文库:上思县志.pdf VIP
- 商业银行资产评估审计律师尽职调查详尽清单(共442项).pdf
- JBT 14800-2024《三轮汽车起动性能试验方法》.docx
- 景区泼水节活动策划方案.pptx VIP
- 广东省深圳市宝安区2022-2023学年高二上学期期末调研测试英语试卷.pdf VIP
- JBT 10512-2024《三轮汽车 传动轴总成技术规范》.docx
- 施工进度计划及保障措施.pdf VIP
- JBT14801-2024 三轮汽车通过性能试验方法.pdf VIP
文档评论(0)