欢迎来到天天文库
浏览记录
ID:33591987
大小:369.24 KB
页数:24页
时间:2019-02-27
《linux编程基础_gcc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编程基础-GCC讲师:张志晓linux下程序开发流程1.编写源代码2.编译源程序3.运行程序4.调试程序5.交叉编译6.编写Makefile1.编写源代码启动linux后新建一个终端,在终[root@JLUZHroot]#vihello.c[root@JLUZHroot]#gedithello.c端窗口中使用VI编辑器来编辑源程序,在命令行中输入命令:vihello.c,即可启动VI编辑器2.编译源程序编译源程序的工具是GCC,在命令行输入“GCC–ohellohello.c”即可对hello.c源代码进行编译
2、3.运行源程序在命令行中输入“./hello”即可运行该程序,命令中的“.”表示当前目录,起指示路径的作用,表示运行当前目录下的hello程序。4.调试程序调试是所有程序员都会面临的问题。当然,这不是必备的步骤,如果程序进一步复杂,就需要对程序进行调试,调试所用到的工具是GDB,GDB调试器是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。5.交叉编译嵌入式软件开发中往往是基于交叉编译环境的,开发是在宿主机中完成(本书中指x86架构的PC机),运行是在目标机(本书中指ARM架构的嵌入式产品)中。
3、因此还需要交叉编译,通过基于ARM架构的GCC编译器将源程序编译成嵌入式产品中的可执行程序。6.编写MakefileMake工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。用户只需编写一次简单的编译语句就可以了。GCC简介Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作之一。gcc可以在多种硬体平台上编译出可执行程
4、序,其执行效率与一般的编译器相比平均效率要高20%~30%GCC简介GCC编译器能将C、C++语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。GCC简介使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking)文件类型Gcc通过后缀来区别输入文件的类别:.c为后缀的文件:C语言源代码文件.a为后缀的文件:
5、是由目标文件构成的库文件.C,.cc或.cxx为后缀的文件:是C++源代码文件.h为后缀的文件:头文件.i为后缀的文件:是已经预处理过的C源代码文件.ii为后缀的文件:是已经预处理过的C++源代码文件.o为后缀的文件:是编译后的目标文件.s为后缀的文件:是汇编语言源代码文件.S为后缀的文件:是经过预编译的汇编语言源代码文件。起步(演示)hello.c:#includeintmain(void){printf(Helloworld!);return0;}编译和运行这段程序:#g
6、cchello.c-ohello#./hello输出:Helloworld!基本用法gcc最基本的用法是∶gcc[options][filenames]options:编译器所需要的编译选项filenames:要编译的文件名编译选项gcc编译器的编译选项大约有100多个,其中多数我们根本就用不到,这里只介绍其中最基本、最常用的参数。-ooutput_filename:确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。(演示)编译选项-c:只编译
7、,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。-g:产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项编译选项-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是编译、连接的速度就相应地要慢一些。-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。编译选项(optimize.c)#includeintmain(v
8、oid){doublecounter;doubleresult;doubletemp;for(counter=0;counter<2000.0*2000.0*2000.0/20.0+2020;counter+=(5-1)/4){temp=counter/1979;result=counter;}printf(Resultis%lf,result);return0;}1.gccop
此文档下载收益归作者所有