在linux中编写c语言代码

上传人:小** 文档编号:56449137 上传时间:2018-10-12 格式:PPT 页数:46 大小:2MB
返回 下载 相关 举报
在linux中编写c语言代码_第1页
第1页 / 共46页
在linux中编写c语言代码_第2页
第2页 / 共46页
在linux中编写c语言代码_第3页
第3页 / 共46页
在linux中编写c语言代码_第4页
第4页 / 共46页
在linux中编写c语言代码_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《在linux中编写c语言代码》由会员分享,可在线阅读,更多相关《在linux中编写c语言代码(46页珍藏版)》请在金锄头文库上搜索。

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工具CodeBlocks,2.1 Linux编程简介,Linux编程可分为Shell编程和高级语言编程。Shell编程常用的语言有BASH、TCSH、GAWK、Perl、Tcl和Tk等。 高级语言包括C、C+、Java等 编译过程:二进制代码-翻译-可执行 SHELL编程使用各自的解释器

2、C语言源程序需要先经过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

4、 ex2-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

6、 make命令和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) e

7、x2-2.o 表示:生成使用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,

8、shell脚本工具。由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文

10、件 3、获得并且修改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.69 2、 AC_INIT定义软件的名称和信息。(DULL-PACKAGE-NAME为软件名,VERSION为软件的版本 3、 AC_CONFIG_SRCDIR用来侦测指定的源码文件是否存在,确定源码目录的有效性 4、 AC_CONFIG_HEADER用于生成config.h文件,以便autoheader使用 5、 AC_PROG_CC用来指定编译器,以便不指定的时候默认为gcc 6、 AC_OUTPUT用来设定config要产生的文件。如

12、果是Makefile,config会把它检查出来的结果带入Makefile.in文件产生合适的Makefile.,3、使用aclocal工具生成aclocal.m44、使用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编程最终的Makefile,9、测试 运行Make命令进行编译。然后运行ex2-2程序,2.8 使用gdb调试程序,2.8.1 初次使用gdb 2.8.2 gdb的基本命令 2.8.3 gdb的调用 2.8.4 gdb运行模式的选择,在实际的开发过程中,程序除了语法正

14、确之外,还必须符合设计者的逻辑意图。如果结果不正确,则可以通过相应的调试环境来跟踪调试。Linux包含了一个gdb的调试程序,gdb是一个用来调试C程序的强大调试器,可以使程序员能在程序运行时观察程序的内部结构和内存的使用情况,同时提供一个功能:监视程序中的变量的值设置断点,是程序在指定的代码行上停止执行一行行的执行代码,一、进入终端,打开GDB查阅完毕,按Q退出,二、以案例ex2-6,进行分析 1、查看ex2-6代码,2、对ex2-6.c 文件,进行编译3、运行结果,4、开启gdb功能,并进入调试 Gcc -o ex2-6 ex2-6.c -g,5、Run命令,运行当前调试程序6、list命

15、令,列出程序语句,10行为单位显示,为查找程序代码错误位置,优先查找算法部分7、利用Break + 显示行号 为程序设置断点8、再次run命令,执行程序,在14行代码出中断,9、利用watch+代码,可以对语句运行情况进行观察 对于案例程序,设置String2值,变量i,进行观察10、输入C命令(Continue命令缩写),单步执行程序 第一次赋值,为空,是world! 后面的空格,11、寻找错误点(1) 到目前为止,显示赋值为H,12、寻找错误点(2),13、寻找错误点(3),14、寻找错误点(4) 发现原因:最后一个字符为 空,printf中,就无输出 Stringsize-i = string i 当i =0 时,就不是预期的字母显示,而是空值,15、编译源程序,打开EX2-6.C,修改后再次GCC编译运行 malloc(size+1) malloc(size) string2size+1 string2size string2size-i string2size-i-1,2.9 IDE工具CodeBlocks,2.9.1 CodeBlocks的安装 2.9.2. CodeBlocks的使用,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号