- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 基于ARM9和Linux嵌入式系统设计 ;9.1 嵌入式Linux的开发环境 ;9.1.2 嵌入式Linux开发的一般过程;9.2 Linux开发工具的使用
9.2.1 Linux开发工具GNU gcc的使用;;例如,$ gcc -o hello hello.c
gcc编译器就会生成一个hello的可执行文件。在hello.c的当前目录下执行./hello。
gcc编译器生成的目标文件默认格式为elf(executive linked file)格式,是Linux系统所采用的可执行链接文件的通用文件格式。elf格式由若干个段(section)组成,由标准c源代码生成的目标文件中包含以下段:
● .text(正文段)包含程序的指令代码。
● .data(数据段)包含固定的数据,如常量,字符串等。
● .bss(未初始化数据段)包含未初始化的变量和数组等。
GCC常用两种模式:编译模式和编译连接模式。 ;例:假设全部的源代码都在一个文件test.c中。
$ gcc -o test
此命令是把源文件test.c直接编译成可执行程序test。
$ gcc -c test.c
此命令是把源文件test.c编译成不可执行目标文件test.o。默认情况下,生成的目标文件名为test.o,但也可以为输出文件指定名称,如下所示:
$ gcc -c test.c –o mytest.o
此命令是把源文件test.c编译成不可执行目标文件mytest.o。
下面的命令将同时编译3个源文件,即first.c、second.c和 third.c,然后将它们连接成一个可执行程序test。命令如下:
$ gcc -o test? first.c second.c third.c;3.其他常用选项的使用
$ gcc test.c –I../inc -o test
此命令告诉GCC包含文件存放在./inc 目录下,在当前目录的上一级。如果在编译时需要的包含文件存放在多个目录下,可使用多个-I 来指定各个目录。如:
$ gcc test.c –I../inc –I../../inc2 -o test
此命令指出了另一个包含子目录inc2,较之前目录它还要在再上两级才能找到。另外,还可在编译命令行中定义符号常量。可简单的在命令行中使用-D选项即可,如下例所示:
$ gcc –D TEST_CONFIGURATION test.c -o test
上面的命令与在源文件中加入下列命令是等效的:
#define TEST_CONFIGURATION;3.其他常用选项的使用
$ gcc test.c –I../inc -o test
此命令告诉GCC包含文件存放在./inc 目录下,在当前目录的上一级。若在编译时需要的包含文件存放在多个目录下,可使用多个-I 来指定各个目录:
$ gcc test.c –I../inc –I../../inc2 -o test
上面命令告诉GCC包含文件存放在./inc 目录下,在当前目录的上一级。若在编译时需的包含文件存放在多个目录下,可使用多个-I 来指定各个目录:
$ gcc test.c –I../inc –I../../inc2 -o test
这里指出了另一个包含子目录inc2,较之前目录它还要在再上两级才能找到.
另外,我们还可以在编译命令行中定义符号常量。为此,我们可以简单的 在命令行中使用-D选项即可,如下例所示:
$ gcc -DTEST_CONFIGURATION test.c -o test
上面的命令与在源文件中加入下列命令是等效的:
#define TEST_CONFIGURATION;4. 警告功能
当GCC在编译过程中检查出错误,则中止编译;但检测到警告时却能继续编译生成可执行程序。
在众多的警告选项之中,最常用的是-Wall选项。该选项能发现程序中一系列的常见错误警告,举例如下:
$ gcc -Wall test.c -o test
该选项相当于同时使用了下列所有的选项:
unused-function:遇到仅声明过但尚未定义的静态函数时发出警告。
unused-label:遇到声明过但不使用的标号的警告。
unused-parameter:从未用过的函数参数的警告。
……;9.2.2 GDB调试器简介
Linux系统中包含了GNU 调试程序gdb,用来调试C和 C++ 程序的调试器。gdb 提供如下功能:
● 运行程序,设置所有的能影响程序运行的参数和环境。
● 控制程序在指定的
文档评论(0)