- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                arm-linux-gcc编译选项
                    
在使用GCC 编译程序时,编译过程分为四个阶段: 
1. 预处理(Pre-Processing) 
2. 编译(Compiling) 
3. 汇编(Assembling) 
4. 链接(Linking) 
Linux 程序员可以根据自己的需要让 GCC 在编译的任何阶段结束,以便检查或 
使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以 
便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其它常用 
的编译器一样,GCC 也提供了灵活而强大的代码优化功能,利用它可以生成执行 
效率更高的代码; 
以文件example.c 为例说明它的用法 
1. arm-linux-gcc: 
 -o 
    arm-linux-gcc -o example example.c 
    不加-c、-S、-E 参数,编译器将执行预处理、编译、汇编、连接操作直接 
    生成可执行代码。 
    -o 参数用于指定输出的文件,输出文件名为example,如果不指定输出文件, 
    则默认输出a.out 
 -c 
    rm-linux-gcc -c -o example.o example.c 
    -c 参数将对源程序example.c 进行预处理、编译、汇编操作,生成example.o 
    文件,去掉指定输出选项-o example.o自动输出为example.o,所以说在这 
    里-o 加不加都可以, 
 -S 
    arm-linux-gcc -S -o example.s example.c 
    -S 参数将对源程序example.c 进行预处理、编译,生成example.s 文件 
    -o 选项同上 
 -E 
    arm-linux-gcc -E -o example.i example.c 
    -E 参数将对源程序 example.c 进行预处理,生成 example.i 文件(不同版 
    本不一样,有的将预处理后的内容打印到屏幕上) 
    就是将#include,#define 等进行文件插入及宏扩展等操作。 
 -v 
    arm-linux-gcc -v -o example example.c 
    加上-v 参数,显示编译时的详细信息,编译器的版本,编译过程等。 
 -g 
    arm-linux-gcc -g -o example example.c 
    -g 选项,加入GDB 能够使用的调试信息,使用GDB 调试时比较方便 
 -Wall 
    arm-linux-gcc -Wall -o example example.c 
    -Wall 选项打开了所有需要注意的警告信息,像在声明之前就使用的函数, 
    声明后却没有使用的变量等。 
 -l 
    arm-linux-gcc     -I /home/include -o example example.c 
    -Idirname: 将 dirname 所指出的目录加入到程序头文件目录列表中。如果 
    在预设系统及当前目录中没有找到需要的文件,就到指定的dirname 目录中 
    去寻找。 
 -static 
    arm-linux-gcc  –static -o libexample.a example.c 
    静态链接库文件, 
arm-linux-ld 
直接指定代码段,数据段,BSS 段的起始地址 
-Ttext startaddr 
-Tdata startaddr 
-Tbss startaddr 
示例: 
arm-linux-ld –Ttext 0x0000000  –g led.o  –o led_elf 
使用连接脚本设置地址: 
arm-linux-ld –Ttimer.lds  –o timer.elf        $^ 
其中timer.lds 为连接脚本 
arm-linux-objcopy 
被用来复制一个目标文件的内容到另一个文件中,可用于不同源文件的之间的 
格式转换 
示例: 
arm-linux-objcopy  –O binary  –S elf_file bin_file 
常用的选项: 
1.input-file , outfile 
输入和输出文件,如果没有outfile,则输出文件名为输入文件名 
2.-I bfdname 或—input-target=bfdname 
用来指明源文件的格式,bfdname 是BFD 库中描述的标准格式名,如果没指明,则 
arm-linux-objcopy 自己分析 
3.-O bfdname 或-
                您可能关注的文档
最近下载
- 姜黄栽培技术ppt课件.pptx VIP
- 2024年北师大版八年级上册教学设计第四章4.4 一次函数的应用.docx VIP
- 5C培训模拟试题及其答案解析,重症医学专科资质培训班模拟考试.docx VIP
- 2024年中国农业银行招聘考试笔试试题.docx VIP
- 公共营养的资料.pptx VIP
- 2025入党考试题库(附答案).pdf VIP
- 新课标人教版六年级上册数学第三单元测验试题.pdf VIP
- 党纪学习教育:《中国共产党党员网络行为规定》解读PPT.pptx VIP
- 2025年新能源汽车市场消费者购车决策影响因素及品牌满意度调查报告.docx
- 十八项医疗核心制度(最新) .pdf VIP
 原创力文档
原创力文档 
                         
                                    

文档评论(0)