在linux中编写c语言代码_第1页
在linux中编写c语言代码_第2页
在linux中编写c语言代码_第3页
在linux中编写c语言代码_第4页
在linux中编写c语言代码_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 Linux下的C语言编程环境本章内容 2.1 Linux编程简介 2.2 Linux下的C语言开发环境 2.3 Linux C程序的开发过程 2.4 编译器gcc的使用 2.5 make工具及使用 2.6 使用autoconf 2.7 使用automake 2.8 使用gdb调试程序 2.9 IDE工具CodeBlocks2.1 Linux编程简介 Linux编程可分为Shell编程和高级语言编程。 Shell编程常用的语言有BASH、TCSH、GAWK、Perl、Tcl和Tk等。 高级语言包括C、C+、Java等 编译过程:二进制代码-翻译-可执行 SHELL编程使用各自的解释器 C

2、语言源程序需要先经过gcc编译器编译生成可执行的应用程序文件,然后才可以运行它。 2.2 Linux下的C语言开发环境 编辑工具 编写源代码(乌班图的VI,gedit) 编译工具 编译连接,生成可执行文件GCC 调试工具 GDB若运行结果和预期结果不符, 对源程序进行修改 维护工具 若程序较大:make 集成开发环境(IDE) 2.3 Linux C程序的开发过程 2.4 编译器gcc的使用 gcc(GUN C Compiler)是GNU退出的功能强大、性能优越的多平台编译器,使用GCC可以编译C和C+源代码,变一处的目标大妈质量非常好,编译速度也很快2.4.1 Ubuntu下gcc的安装与设

3、置在Ubuntu版本的LINUX操作系统中,Gcc是已经安装好的,但由于且少常用的头文件和库文件,所以需要安装build-essential文件包,在联网状态下使用如下命令即可。其中,apt-get是版本中的软件挂历命令,可以用于安装、删除、更新系统中的软件包。Install是安装,build-essential是软件包名称。由于安装软件需要Root权限,因此系统会提示输入密码 通过GCC V 查看GCC版本2.4.2 gcc的使用 LS进行文件列表,CD BOOK进入文件存放位置 使用GEDIT 进入编辑文件 编辑完成之后,保存,关闭编译器 同时使用GCC 使用gcc-o ex2-1 ex2

4、-1.c, 编译完成后,多一个EX2-1。-O指定输出文件名字(可执行) ./ex2-1 运行生成文件,显示效果 *.c *.h 意义? 哪个是定义文件,哪个是头文件 Linux可以做文件链接 如下:相比较文件1中,多一个包含语句F2.h,声明一个函数F2。 F2.c中只有一个输出语句。 在例2的主函数当中,输出字符串后,调用F2函数当中输出的内容。 那么,用gcc做链接(编译多个源文件) 小节 Gcc对c语言的处理需要经过4个步骤: 1.预处理,这一步需要分析各种命令,如#define、#include、#if等,Gcc调用cpp程序来进行预处理工作 2.编译,这一阶段根据输入文件产生汇编余

5、元。由于通常是立即调用汇编程序,所以其输出一般不保存在文件中。Gcc调用ccl进行编译工作。 3.汇编,将汇编语言用作输入,产生具有.o扩展名的目标文件。Gcc调用as进行汇编工作 4.链接,个目标文件被放在可执行文件的适当位置上,该程序引用的函数也放在可执行文件中(对使用共享库的程序稍有不同)。Gcc调用链接程序的来ld来完成最终任务 但是,只依靠gcc是不够用的,对大型程序来说,工作量会复杂很多 当软件被划分为几个子系统,子系统又被划分为数个可预读文件组成的模块时,模块之间需要配合,当一个模块被修改时,其他模块也要保证协调关系,那么又该如何?2.5 make工具及使用 2.5.1 make

6、命令和Makefile 2.5.2 Makefile的规则 2.5.3 Makefile中的变量 2.5.4 伪目标 2.5.5 条件语句 2.5.6 调试make 学习利用makefile文件编写命令Ex2-2:依赖ex2-2.o f2.o使用gcc编译链接,ex2-2.o f2.o 生成可执行文件ex2-2 利用make f 运行制作的makefile文件 运行ex2-4案例,对ex2-3进行重写 Objs:代表目标文件 编译C所用命令行,默认-c Ex2-2 依赖文件(引用变量),ex2-2.o f2.o Gcc输出文件是ex2-2,依赖文件是目标文件 gcc $(C) ex2-2.o

7、表示:生成使用GCC,用EX2-2.C F2.C得到 ex2-3,ex2-4,2个代码实现的关系2.6 使用autoconf 2.6.1 创建configure脚本 2.6.2 编写configure.in文件 2.6.3 使用autoscan创建configure.in文件 2.6.4 用autoconf创建configure脚本 2.6.5 更新configure脚本 2.7 使用automake 2.7.1 automake的工作流程 2.7.2 使用automake生成Makefile.in Autoconf是一个用于生成,可以自动配置软件源代码,用来适应多种unix,shell脚本工

8、具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的, 就是说配置脚本的用户并不需要拥有Autoconf。 有autoconf生成的脚本,命名为configure,检查当前系统是否满足软件正常运行所需要的特征。并且根据检查得到的信息,生成makefile。 使用者只需要在软件发布版本的源程序目录,执行config文件,其他工作自动运行。 对于每个使用了Autoconf的软件包,Autoconf从一个列举了该软件包需要的,或者可以 使用的系统特征的列表的模板文件中生成配置脚本。在shell代码识别并响应了一个被列出的系统特征之后,Autoconf允许多个可能使用(或者需要)

9、该特征的软件包共享该特征。 如果后来因为某些原因需要调整shell代码,就只要在一个地方进行修改; 所有的配置脚本都将被自动地重新生成,使用更新了的代码。Autoconfig/Automake工具工具简述简述 在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能。也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便,当前大多数软件包都是用此方法生成 使用autoconf / automake,需要如下几步工作: 1、首先建立编写一个C源程序文件 2、使用Autoscan工具生成config.ac文件 3

10、、获得并且修改configure.ac 4、使用aclocal工具生成aclocal.m4 5、使用autoconf工具生成configure文件 6、使用autoheader工具生成config.h.in文件 7、创建Makefile.am文件 8、使用Automake生成Makefile.in文件 9、运行自动配置设置文件configure,把Makefile.in 编程最终的Makefile 10、运行Make命令进行编译。案例演示:ex2-2为例1、使用autoscan:生成configure.scan,并更名为configure.in,作为蓝本改动程序名称,使用gedit修改程序文件

11、,修改目录为./-当前目录2.获得并修改configure.ac 1、 AC_PREREQQ宏声明本文件要求的autoconf版本,这里是2.692、 AC_INIT定义软件的名称和信息。(DULL-PACKAGE-NAME为软件名,VERSION为软件的版本3、 AC_CONFIG_SRCDIR用来侦测指定的源码文件是否存在,确定源码目录的有效性4、 AC_CONFIG_HEADER用于生成config.h文件,以便autoheader使用5、 AC_PROG_CC用来指定编译器,以便不指定的时候默认为gcc6、 AC_OUTPUT用来设定config要产生的文件。如果是Makefile,c

12、onfig会把它检查出来的结果带入Makefile.in文件产生合适的Makefile. 3、使用aclocal工具生成aclocal.m4 4、使用autoconf工具生成configure文件 5、使用autoheader工具生成config.h.in文件 6、创建Makefile.am文件1、AUTOMAKE_OPTIONS为设置的为设置的Automake选项。它有三种等级提供给用户选择:选项。它有三种等级提供给用户选择:foreign,gnu,gnits,默认等级为默认等级为gnu.在此使用在此使用foreign,它只检测必须的文件它只检测必须的文件。2、bin_PROGRAMS定义要

13、产生的执行文件名。如果要产生多个可执行文件,则每个文件定义要产生的执行文件名。如果要产生多个可执行文件,则每个文件名用空格隔开。名用空格隔开。3、ex2_2_SOURCES定义为这个程序所需要的原始文件。如果有多个文件组成的,则必须定义为这个程序所需要的原始文件。如果有多个文件组成的,则必须用用 | 进行隔开进行隔开。7、使用Automake生成Makefile.in文件,要使用选项“-add-missing”,让Automake自动添加一些必要的脚本文件8、运行自动配置设置文件configure,把Makefile.in编程最终的Makefile9、测试运行Make命令进行编译。然后运行ex

14、2-2程序2.8 使用gdb调试程序 2.8.1 初次使用gdb 2.8.2 gdb的基本命令 2.8.3 gdb的调用 2.8.4 gdb运行模式的选择 在实际的开发过程中,程序除了语法正确之外,还必须符合设计者的逻辑意图。如果结果不正确,则可以通过相应的调试环境来跟踪调试。 Linux包含了一个gdb的调试程序,gdb是一个用来调试C程序的强大调试器,可以使程序员能在程序运行时观察程序的内部结构和内存的使用情况,同时提供一个功能: 监视程序中的变量的值 设置断点,是程序在指定的代码行上停止执行 一行行的执行代码一、进入终端,打开GDB查阅完毕,按Q退出二、以案例ex2-6,进行分析1、查看

15、ex2-6代码2、对ex2-6.c 文件,进行编译3、运行结果4、开启gdb功能,并进入调试Gcc -o ex2-6 ex2-6.c -g 5、Run命令,运行当前调试程序6、list命令,列出程序语句,10行为单位显示为查找程序代码错误位置,优先查找算法部分7、利用Break + 显示行号 为程序设置断点8、再次run命令,执行程序,在14行代码出中断9、利用watch+代码,可以对语句运行情况进行观察对于案例程序,设置String2值,变量i,进行观察10、输入C命令(Continue命令缩写),单步执行程序第一次赋值,为空,是world! 后面的空格11、寻找错误点(1)到目前为止,显示赋值为H12、寻找错误点(2)13、寻找错误点(3)14、寻找错误点(4) 发现原因:最后一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论