嵌入式系统原理与应用--基于ARM微处理器和Linux操作系统(修订版21世纪高等学校嵌入式

嵌入式系统原理与应用--基于ARM微处理器和Linux操作系统(修订版21世纪高等学校嵌入式
作者: 编者:朱华生//吕莉//熊志文//徐晨光
出版社: 清华大学
原售价: 39.00
折扣价: 29.25
折扣购买: 嵌入式系统原理与应用--基于ARM微处理器和Linux操作系统(修订版21世纪高等学校嵌入式
ISBN: 9787302501671

作者简介

内容简介

3章Linux系统编程基础 本章首先介绍GCC编译器的编译过程及常用选项的使用,通过实例讲述GDB调试器的使用方法,然后介绍Make工具的使用,最后介绍文件操作、时间获取和创建线程等任务的编程方法。 3.1GCC编译器 3.1.1GCC概述 GCC(GNU C Compiler)是GUN项目的C编译器套件,也是GNU软件家族中具有代表性的产品之一。GCC目前支持的体系结构有四十余种,如x86、ARM、PowerPC等系列处理器; 能运行在不同的操作系统上,如Linux、Solaris、Windows CE等操作系统; 可完成C、C++、Objective C等源文件向运行在特定CPU硬件上的目标代码的转换。GCC的执行效率与一般的编译器相比平均效率要高20%~30%。GCC是Linux平台下最常用的编译器之一,它也是Linux平台编译器事实上的标准。同时,在使用Linux操作系统的嵌入式开发领域,GCC也是使用最普遍的编译器之一。 GCC编译器与GUN Binutils工具包是紧密集成的,如果没有Binutils工具,GCC也不能正常工作。Binutils是一系列开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。Binutils工具集里主要包含以下一系列程序: addr2line、ar、as、c++、gprof、ld、nm、objcopy、objdump、ranlib、readelf、size、strings和strip,它包含的库文件有: libiberty.a、libbfd.a、libbfd.so、libopcodes.a和libopcodes.so。 在Linux操作系统中,文件的后缀名不代表文件的类型,但为了提高工作效率,通常会给每种文件定义一个后缀名。GCC支持的文件类型比较多,具体如表3.1所示。 表3.1GCC支持的文件类型 后缀说明后缀说明 .cC源程序.ii经过预处理的C++程序 .a由目标文件构成的档案文件(库文件).mObjective C源程序 .C.ccC++源程序.o编译后的目标程序 .h头文件.s汇编语言源程序 .i经过预处理的C程序.S经过预编译的汇编程序 3.1.2GCC编译过程 下面通过一个常用的例子来说明GCC的编译过程。 利用文本编辑器创建hello.c文件,程序内容如下。 #include void main() { char msg[80]="Hello,world!"; printf( "%s\n",msg); } 编写完后,执行以下编译指令。 #gcc hello.c 因为编译时没有加任何选项,所以会默认生成一个名为a.out的可执行文件。执行该文件的命令及结果如下。 #./a.out Hello,world! 使用GCC由C语言源代码程序生成可执行文件要经历4个过程,如图3.1所示。 图3.1GCC编译过程 1. 预编译 预编译(preprocessing)的主要功能是读取源程序,并对头文件(include)、预编译语句(如define等)和一些特殊符号进行分析和处理。如把头文件复制到源文件中,并将输出的内容送到系统的标准输出。源代码中的预编译指示以“#”为前缀。通过在GCC后加上E选项完成对代码的预编译。命令如下。 # gcc E hello.c 执行命令时,控制台上会有数千行的输出,其中大多数来自stdio.h头文件,也有部分是声明。预编译主要完成以下3个具体任务。 (1) 把include中的头文件复制到要编译的源文件中。 (2) 用实际值替代define文本。 (3) 在调用宏的地方进行宏替换。 下面通过实例test.c来理解预编译完成的工作。 test.c的代码如下。 #define number (1+2*3) int main() { int n; n=number+3; return 0; } 对test.c文件进行预编译,输入以下命令。 #gcc E test.c 执行命令后会显示如下内容。 # 1 "test.c" # 1 "" # 1 "" # 1 "test.c" main() { int n; n=(1+2*3)+3; return 0; } 如果要将预编译结果保存在test.i文件中,可以输入以下命令。 #gcc E test.c o test.i "《嵌入式系统原理与应用---基于ARM微处理器和Linux操作系统(修订版)》以ARM微处理器为核心,以Linux操作系统为基础,以开发温度采集系统项目为主线,介绍嵌入式系统的开发技术。 本书的主要内容包含:嵌入式系统基础、基于ARM9处理器的硬件平台、Linux编程基础、嵌入式开发环境和系统移植、Linux驱动程序设计 、Qt/E应用程序设计、嵌入式数据库应用程序。并附Linux常用命令简介。 本书将温度采集系统项目分解成若干个子项目,分别放到各部分的实验之中,只要将这些实验综合在一起就可能形成一个系统。"