GCC 参数的使用

GCC参数的使用

gcc 主要有三个参数-E -S -c -o -l 以及不加参数

四个阶段:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。

-o

生成文件

如果有-E 就是生成预编译文件

如果是-S 就是生成汇编文件

如果是-c 就是生成目标文件

-E参数

-E代表 只进行预编译

将包含的头文件重新展开,还有#define的这些语言

gcc -E main.c > main.i
#or
gcc -E main.c -o main.i
#这个时候需要自己输入到一个新的文件里

-S

进行预编译 + 编译

会生成一个main.s的汇编文件

gcc -S main.c -o main.s

-c

进行预编译 编译 以及汇编

会生成一个目标文件,接下来只需要链接一下,就可以生成执行文件

gcc -c main.c -o main.o

#Linking 链接
gcc main.o -o main  
#main是一个可执行文件

-I (大写的i)

指定自己的头文件目录

在编译成目标文件的时候可以优先使用,在编译时打桩可以使用。(打桩具体参考《深入理解计算机操作系统》第三版P492)

-L

指定自己的库文件位置

-l(小写)指定具体的库名字

Linux的库文件有两种,动态链接库通常是.so结尾,静态链接库通常是.a结尾

-D

定义一个宏 使用方式如下
-DA 则定义一个A=1 默认情况下为1
-D B=2 则定一个B=2

-Wl

用来向链接器指定参数
gcc -Wl, --wrap,malloc -Wl,--wrap,free -o int1 A.o B.o
则链接器的参数会有两个 --wrap malloc --wrap free 可以看到--wrap,free 变成了--wrap free 也就是, 变成了空格

参考:https://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html

你可能感兴趣的:(GCC 参数的使用)