新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > gcc的几个妙用

gcc的几个妙用

作者: 时间:2016-12-01 来源:网络 收藏

比如我将宏定义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
上面只是其中的一部分,还有很多的内容。其中这些内容指出了程序的基本分布情况。
3、汇编程序
汇编语言是不可避免要学习的设计语言,但是很多时候并不需要完全手动的编写汇编语言,我们可以采用gcc实现一段程序的汇编形式,只需要选择正确的选项即可。
gcc -S file.c
实现如下:
[gong@Gong-Computer Example]$ gcc -S main.c
[gong@Gong-Computer Example]$ vi main.s
从上面的代码就知道了基本的汇编形式,当然也可以自己设计,但是该选项简化了汇编语言的设计。

4、在gcc中函数库,链接库的调用,这是比较难以掌握和容易出错的地方。
在静态编译的情况下:
gcc file.c -o file -Llibpath -llibname
gcc中-L主要是指明函数库的查找目录,-L后紧跟着目录而不是文件。-l后面紧跟着需要连接的库名,需要主要的是静态库通常是以 libfile.a命名,这时-l后的库名只能是file,而不是libfile.a。这是需要注意的。一般情况下总是将-l放在最后。但是需要注意的是各个库之间的依赖关系。依赖关系没有搞清楚也会导致编译出现错误。

关键词: gcclinux编译工

评论


技术专区

关闭