GCC编译和GDB调试

一: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)  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值