GCC编译和GDB调试

原创 2016年05月30日 20:38:06

一:VMwareTools安装过程

1.  sudo apt-get update

2.  sudo apt-get dist-upgrade

3.  3.sudo apt-get install build-essential

4.  sudo apt-get install linux-headers-3.0.0-29-generic-pae

5.  Ubuntu与windows间的文件共享

(选择VM中设置,选项,共享文件夹,添加路径,如果不能在Ubuntu下的/mnt/hgfs下找到共享文件夹还需安装

Sudo apt-get instatll open-vm-dkms

Sudo mount -t vmhgfs .host:/ /mnt/hgfs

二:C 编程中相关文件后缀
.a     静态库 (archive)
.c     C源代码(需要编译预处理)
.h     C源代码头文件
.i     C源代码(不需编译预处理)
.o     对象文件
.s     汇编语言代码
.so     动态库

三:Gcc的执行过程

gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步

1.预处理,生成.i的文件 [预处理器cpp]

2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]

3.有汇编变为目标代码(机器代码)生 成.o的文件[汇编器as]

4.连接目标代码,生成可执行程序[链接器ld]

四. 常用编译命令选项

   假设源程序文件名为test.c。

1.  无选项编译链接

用法:#gcc test.c

作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

2. 选项 -o

用法:#gcc test.c -o test

作用:将test.c预处理、汇编、编译并链接形成可执行文件test。

-o选项用来指定输出文件的文件名。

3. 选项 -E

用法:#gcc -E test.c -o test.i

作用:将test.c预处理输出test.i文件。

4. 选项 -S

用法:#gcc -S test.i

作用:将预处理输出文件test.i汇编成test.s文件。

5. 选项 -c

用法:#gcc -c test.s

作用:将汇编输出文件test.s编译输出test.o文件。

 6. 无选项链接

用法:#gcc test.o -o test

作用:将编译输出文件test.o链接成最终可执行文件test。

7. 选项-O

 用法:#gcc -O1 test.c -o test

作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

五. 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:

[假设有两个源文件为test.c和testfun.c]

 

1.  多个文件一起编译

用法:#gcc testfun.c test.c -o test

 

作用:将testfun.c和test.c分别编译后链接成test可执行文件。

 

 2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

用法: #gcc -c testfun.c           //将testfun.c编译成testfun.o

#gcc -c test.c                  //将test.c编译成test.o

#gcc -o testfun.o test.o -o test    //将testfun.o和test.o链接成test

 

 以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译

六:gcc的各种命令

1.查看gcc参数 gcc --help

2.设置输出的文件 gcc hello.c -o do

3.查看编译过程 gcc -v hello.c

七:gdb 调试程序

1.所谓调试,指的是对编好的程序用各种手段进行查错和排错的过程。进行这种查错处理

时,并不仅仅是运行一次程序检查结果,而是对程序的运行过程、程序中的变量进行各种分

析和处理。本节将讲解使用gdb 进行程序的调试。

Gdb主要进行下面5个方面的操作

1)  

版权声明:本文为博主原创文章,未经博主允许不得转载。

命令行中使用gcc编译器和gdb调试

先在命令行中输入g++看看有没有反应,没有就百度一下如何添加。常见编译选项gcc test.c//编译为a.exe文件 gcc test.c -o test //编译为test.exe文件 gcc t...
  • fanesemyk
  • fanesemyk
  • 2016年07月14日 20:54
  • 1134

linux下编译器gcc和调试器gdb的使用

1 gcc的使用          gcc是linux下通用的C程序编译器,具有非常强大的程序编译功能。 1.1  gcc对源程序扩展名的支持 .c为C语言源代码文件 .a是由目标文件构成的库...
  • jeromeyu
  • jeromeyu
  • 2014年01月05日 23:12
  • 1243

使用gdb调试程序详解和GCC参数详解

熟练使用gdb是一个linux下开发人员必备的一项技能,我们由浅入深的学习一下gdb的强大功能。 一.gdb简单介绍 名称     gdb - GNU Debugger 提要     gdb...
  • doc_sgl
  • doc_sgl
  • 2013年12月11日 21:35
  • 4402

GCC编译GDB调试程序

GCC编译器能将C.C++语言源程序,汇编程序编译,链接为可执行的文件 hello.c #include int main(void) { printf("Hello World!...
  • Ammon_Zhang
  • Ammon_Zhang
  • 2016年08月23日 22:24
  • 1120

gcc编译以及Makefile与GDB调试

一:编译选项:       gcc常用编译的选项: -c 表示编译源文件 -o 表示输出目标文件 -g 表示在目标文件中产生调试信息, 用于 gdb 调试 -D 编译时将宏定义传入进去 -...
  • smilejiasmile
  • smilejiasmile
  • 2017年07月11日 13:22
  • 93

Linux编程-编译(gcc)与调试(gdb)

注】文章中的所有截图均为centos下实验结果,亲测命令正确= ̄ω ̄= 【参考资料】《Linux从入门到精通(第2版)》刘忆智 等编著 1、编译一个C程序 :以用vim...
  • bestlove12345
  • bestlove12345
  • 2016年07月01日 16:48
  • 342

Linux GCC编译、gdb调试、makefile、动态链接库的创建

学习了一段时间的Linux 系统编程来总结总结,GCC的一些相关知识。比如GCC编译,gdb调试器的使用,makefile的编写等等知识点。这些都是最最基础的知识了,hh。还有出现segment fa...
  • u014297722
  • u014297722
  • 2017年06月24日 15:45
  • 262

【Linux学习笔记八】Linux编程-编译(gcc)与调试(gdb)

设置断点 (gdb) break 10 ##在第10行设置断点 (gdb) break summary ##在summary()函数入口...
  • iamthezbl
  • iamthezbl
  • 2016年05月08日 17:29
  • 778

windows下建立gcc/g++/gdb/make编译及调试C/C++的IDE环境

使用工具1:Eclipse CDT version可在http://www.eclipse.org/cdt/ 下载到最新的版本CDT 7.0.2这个是一个在Eclipse基础上扩展的C,C++编译调试...
  • iamoyjj
  • iamoyjj
  • 2011年04月02日 21:57
  • 7817

linux-编译gcc调试gdb与安装make与core

1,工具gcc:编译C文件 单文件编译 $gcc -c hello.c #只编译不链接,生成hello.o $gcc -o hello hello.o #输出可执行文件hello...
  • gexiaobaoHelloWorld
  • gexiaobaoHelloWorld
  • 2013年06月21日 23:38
  • 5770
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GCC编译和GDB调试
举报原因:
原因补充:

(最多只允许输入30个字)