gcc的几个妙用
比如我将宏定义max(x,y)改写为max (x,y)就会出现下面的结果。如下图所示。

从856行的结果我们可以知道,上面的代码并不是我们需要的情况,这说明我们的代码存在问题,从而实现了宏定义的检测。这是非常有用的一种检测方式。
2、产生镜像文件
基本的实现方法是:注意Wl逗号后面跟着需要传递的参数,逗号后面不能存在空格,否则出现错误。
gcc -Wl,-Map=file.map file.c -o target
关于选项-Wl的使用可以参考help,这是我的一个截图

从上面说明可以知道-Wl用于传递参数给链接器。当然也有传递给汇编器和预编译的选项。
通过上面的选项可以得到一个镜像文件,通过打开镜像文件来程序的结构。
[gong@Gong-Computer Example]$ gcc -Wl,-Map=main.map main.c -o main.exe
[gong@Gong-Computer Example]$ vi main.map
[gong@Gong-Computer Example]$ vi main.map

上面只是其中的一部分,还有很多的内容。其中这些内容指出了程序的基本分布情况。
3、汇编程序
汇编语言是不可避免要学习的设计语言,但是很多时候并不需要完全手动的编写汇编语言,我们可以采用gcc实现一段程序的汇编形式,只需要选择正确的选项即可。
gcc -S file.c
实现如下:
[gong@Gong-Computer Example]$ gcc -S main.c
[gong@Gong-Computer Example]$ vi main.s
[gong@Gong-Computer Example]$ vi main.s

从上面的代码就知道了基本的汇编形式,当然也可以自己设计,但是该选项简化了汇编语言的设计。
4、在gcc中函数库,链接库的调用,这是比较难以掌握和容易出错的地方。
在静态编译的情况下:
gcc file.c -o file -Llibpath -llibname
评论