编译原理及交叉编译.doc

编译原理及交叉编译.doc

ID:59134958

大小:40.00 KB

页数:3页

时间:2020-09-12

编译原理及交叉编译.doc_第1页
编译原理及交叉编译.doc_第2页
编译原理及交叉编译.doc_第3页
资源描述:

《编译原理及交叉编译.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理gcc/g++在执行编译的时候,只要分四个阶段:1、预处理阶段,完成宏定义和include文件展开等工作;不生成文件[预处理器cpp]2、根据编译参数进行不同程度的优化,编译成汇编代码;将预处理后的文件转换成汇编语言,生成.s的文件[编译器egcs]3、用汇编器把汇编代码进一步生成目标代码;由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4、用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件;[链接器ld]gcc常用编译选项:-c只生成object文件,不链接-S只把文件编译成为汇编代码-E只运行C预编译器cpp,不生成文件-o生成指定的输出文件

2、-g生成可被gdb使用的标准调试信息-IDIR指定额外的头文件搜索路径DIR-LDIR指定额外的库函数搜索路径DIR-lLIBRARY指定链接时需要的其它函数库“LIBRARY”-w不生成任何警告信息-Wall生成所有级别的警告信息-shared生成支持动态共享库的执行文件-static不支持动态共享库,把函数库内容静态链接到可执行程序中例如:有一Main.c,代码如下:#includeVoidMain(){Printf(“Helloworld!”);}编译:第一阶段:gcc–EMain.c//打印出编译信息,但是没有生成任何文件Gccmain.c–E–omain.cpp//生

3、成main.cpp的文件第二阶段:gcc–Smain.c//生成Main.s的汇编文件第三阶段:gcc–cmain.c//生成Main.o的目标文件第四阶段:Gccmain.c//直接生成文件名为默认的a.out的可执行文件Gccmain.c–omain//生成文件名为main的可执行文件系统在编译的时候,会在/usr/include中搜索头文件,在/lib,/usr/lib中搜索库文件gcc优化编译选项:-O0不进行代码优化处理-O,O1进行一般优化,减少大小和时间-O2进一步优化,一般在内核编译时使用[一般建议]-O3较-O2进一步优化gcc可以同时用来编译C程序和C++程序。

4、但gcc只能编译C++源文件,而不能自动和C++程序使用的库链接。因此,通常使用g++完成C++程序的编译和链接.交叉编译要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(crosscompilationtoolchain)然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。什么是EABI?Embeddedapplicationbinaryinterface,即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程,和c,c++语言接口的规范,是编译连接工具的基础规范,也是研究它们工作原

5、理的基础安装交叉编译工具1、复制源码包到Linux系统的目录中(通过smb服务器)2、解压,tarxzvfarm-XXXXXX.gz–C/解压到usr/local/arm目录下3、添加环境变量Vi/etc/profile在exportPATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEINPUTRC后面加上ExportPATH/usr.local/bin/arm/4.3.2/bin:$PATH//在bin中查找可执行文件保存退出Source/etc/profile//让添加的环境变量生效4、交叉编译安装成功5、修改Makefile中的编译器执行arm-linux-

6、gccmain.c–omain//编译

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。