欢迎来到天天文库
浏览记录
ID:5411033
大小:3.32 MB
页数:39页
时间:2017-11-11
《源代码编译和调试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Page1/40第五章内容回顾第六章源代码编译和调试预习检查什么是Gcc什么是Gdb3Page4/40本章目标能够使用Gcc来编译程序能够使用Gdb调试有问题的程序Page5/40本章结构Gcc源代码编译和调试Unix/Linux的起源与发展Linux在企业中的应用Linux的安装方式系统安装过程Linux的图形界面GdbUnix/Linux版本GCC是什么?GCC以前是GNUCCompiler。GCC现在是GNUCompilerCollection.语言:gcc,g++,gcj…工具:cpp,ld,runtimelibrary…平台:X86-linux,sparc-
2、sun-solaris,arm,MinGW,vxwork…谁写的GCCRichardStallman是GCC最初的作者.现在,自由软件基金会(FSF)指定GCCsteeringCommittee为GCC的官方维护者。为什么选择GCCGCC具备可移植性。GCC是免费的。大家都用GCC,易于发现问题.gcc的简介gcc是GNU的C和C++编译器。实际上,gcc能够编译多种语言:C、C++和ObjectC等。利用gcc命令可同时编译并连接C和C++源程序。也可以对几个C源文件利用gcc编译、连接并生成可执行文件。gcc可以使程序员灵活地控制编译过程。编译过程一般可以分为下面
3、四个阶段,每个阶段分别调用不同的工具进行处理gcc的简介预处理链接编译汇编源程序(*.c)可执行文件预处理器*.i编译器*.s组译器*.o连接器*.oGNUC的使用基本语法gcc[options][filenames]说明:在gcc后面可以有多个编译选项,同时进行多个编译操作。很多的gcc选项包括一个以上的字符。因此你必须为每个选项指定各自的连字符。例如,下面的两个命令是不同的:gcc-c-gtest1.cgcc-cgtest1.c当你不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.o的可执行文件。gcc选项gcc选项例如有程序:hello.c(
4、1)预处理gcc-Ehello.c-ohello.i使用命令查看ls-l得到:hello.i(查看hello.i)(2)编译gcc-Shello.i-ohello.s(3)汇编gcc-chello.s-ohello.o(4)连接gcchello.o-oxxxx(5)执行./xxxxgcc选项还有两个非常常用的库依赖选项-Idir可以在头文件的搜索路径中,添加dir目录。由于Linux中头文件都默认放到了“/usr/include/”下,当用户希望添加放置其它位置的头文件时,可以用“-Idir”选项来指定例如在“/root/xxxx/”有两个文件/*pan.c*/#in
5、cludemain(){printf(“welcometoyou!!!!!”);return0;}gcc选项例如在“/root/xxxx/”有两个文件/*my.h*/#include这样,就可在gcc命令行中加入“-I”选项gccpan.c–I/root/xxxx/-opan然后运行程序,输出结果./pangcc选项警告选项如:有以下程序段(程序名为warning.c)#includevoidmain(){longlongtmp=1;printf(“Thisisabadcode!”);return0;}分别用选项
6、-ansi、-pedantic、-Wall编译程序警告选项输入gcc-ansiwarning.c–owarning该选项没有发现“longlong”这个数据类型的错误gcc-pedanticwarning.c–owarning该选项查出了“longlong”这个无效数据类型gcc-Wallwarning.c–owarning该选项找出未使用的变量tmp,但没有找出无效数据类型的错误优化选项优化选项可以使GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。这些选项中最典型的是-O和-O2选项。-O0不进行优化处理。-O1或O选项:告诉GCC对源代码进
7、行基本优化。这些优化在大多数情况下都会使程序执行的更快。-O2选项:告诉GCC产生尽可能小和尽可能快的代码。-O2选项将使编译的速度比使用-O时慢。但通常产生的代码执行速度会更快。-O3选项:比-O2更进一步优化,包括inline函数。6.2Gdb调试器GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具6.2Gdb的作用GDB主要完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事
此文档下载收益归作者所有