linux gcc参数集

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) 

linux gcc参数集

https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html

0. GCC 与 gcc

GCC, The GNU Compiler Collection
includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,…).

gcc, GNU project C and C++ compiler

1. 简述gcc的编译流程

我们通常所说的编译指的是下面的整个过程, 而不是特指编译那个步骤.

在这里插入图片描述

2. gcc指令的一般格式

gcc [选项] 要编译的文件 [ -o 目标文件]

3. gcc指令的常用参数

参数含义举个例子
-o重命名输出文件(Place the output into < file >.)gcc file.c -o file
-O对程序进行优化, 优化等级O3>O2>O1=Ogcc -O3 file.c -o file.i
-L指定库文件的搜索路径gcc -L /usr/lib file.c -o file.i
-l(小L)指定库文件gcc -lm file.c -o file.i
-I(大i)指定头文件的搜索路径gcc -I . file.c -o file.i
-D宏定义gcc -D’TEST=“test”’ file.c -o file

4. gcc指令的常用调试参数

参数含义举个例子
-g产生符号调试工具(GNU的gdb)所必要的符号信息g3>g2=g>g1gcc -g3 file.c -o file
-pedantic在编译不符合ANSI/ISO C语言标准的源代码时, 将产生相应的警告信息gcc -pedantic file.c -o file
-Wall产生尽可能多的警告信息gcc -Wall file.c -o file
-Werror将所有的警告当成错误进行处理gcc -Werror file.c -o file
-Wcast-align当源程序中地址不需要对齐的指针指向一个地址需要对齐的变量地址时, 产生一个警告gcc -Wcast-align file.c -o file
-v输出 gcc 工作的详细过程gcc -v file.c -o file
-Wl,-Map=file.map生成映射文件gcc -Wl,-Map=file.map file.c -o file
-p/-pg将剖析(Profiling)信息加入到最终生成的二进制代码中gcc -p file.c -o file

5. gcc指令的编译相关参数

参数含义举个例子
-E预处理(Preprocess only; do not compile, assemble or link.)gcc -E file.c -o file.i
-S预处理 - 编译(Compile only; do not assemble or link.)gcc -S file.c -o file.s
-c预处理 - 编译 - 汇编(Compile and assemble, but do not link.)gcc -c file.c -o file.o
-save-temps保存编译过程中生成的一些列中间文件(file.i file.o file.s)gcc -save-temps file.c -o file.o
-M获取目标的完整依赖关系gcc -M test.c
-MM获取目标的部分依赖关系gcc -MM test.c
-e用于在链接时指定入口函数, 自定义入口函数时必须使用-nostartfiles选项进行链接暂未搞懂~

6. gcc指令的其他常见参数

参数含义举个例子
–target-help显示目前所用的gcc支持CPU类型gcc --target-help
-Q显示编译过程的统计数据和每一个函数名gcc -Q file.c -o file
-static编译时强制使用静态链接库gcc -static file.c -o file
-shared生成一个共享的目标文件(也就是动态库文件)gcc -shared file.c -o file.so
-fPIC告诉编译器产生与位置无关代码(Position-Independent Code)gcc -fPIC -shared file.c -o file
-funsigned-char将char解释为符号的chargcc -funsigned-char file.c -o file

7. gcc指令的黑科技

1. 使用@参数从文件中读取参数:

$cat param.txt
	-Wall
$gcc @param.txt file.c -o file

2. 使得gcc支持ISO C89风格:

$gcc -ansi file.c -o file

3. 使得gcc支持指定的c/c++的标准:

$gcc -std=c++11 file.cpp -o file

标准如 c++11, c++14, c90, c89等

4. 使用-static-libstdc++静态链接libstdc++:

$gcc -static-libstdc++ file.c -o file  

默认使用libstdc++共享库, 而-static-libstdc++可以指定使用libstdc++静态库.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安河桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值