GCC编译参数详细说明

GCC编译参数详细说明

a. 基本编译命令:

gcc main.c

默认生成的可执行文件是 a.out
b. 如果需要指定输出文件,则需要使用如下的命令:

gcc main.c – o main

c.使用-Wall 选项可以输出所有的警告信息:

gcc -Wall main.c -o main

d. 输出 C 源码的预处理结果, 使用-E 选项,默认是输出控制台,可以将其重定向到文件保存:

 gcc -E main.c > main.i

e. 如果只想输出汇编代码而非二进制代码,使用-S :

gcc -S  main.c

f. 使用-C(大写) 选项只生成 C 程序对应的目标文件,但是不进行链接:

gcc -C main.c

g. 输出所有的中间文件, 使用-save-temps 选项:

gcc -save-temps main.c

h. 与共享库进行链接,应使用-l 选项再加上库程序的名字,例如,程序引用了 math 库中的 pow 函数:

   gcc -Wall main.c -o main – lm

i. 编译生成共享库时,为了保证所生成的库可以被加载到合法的任意地址,需要使用-fPIC 选项,例如如下的命令生成一个名为 test.so 的共享库:

gcc -c -Wall -Werror -fPIC test.c
gcc -shared -o test.so test.o

j. 如果想查看编译器是怎么编译源程序的,以及每一步所使用的命令是什么,则应该使用-V 选项:

gcc -Wall -v main.c -o main

k. 使用-ansi 可以指定编译器编译源码时遵循的语言标准,例如如下代码按照 ISO C89 对源码进行编译:

gcc -Wall -ansi main.c -o main

l. 有些时候警告中往往预示着一些潜在的错误,因此部分项目在编译时要求将警告当做错误看到, 使用-Werror :

gcc -Wall -Werror main.c -o main

m. 经过优化的代码调试时可能会出现找不到声明的变量、控制流程发生变化、有些语句被直接跳过等现象。总而言之,不可能对编译之后的代码进行调试。为了让编译器生成额外的信息以利于程序的调试(例如使用 gdb),使用 -g 。

gcc -Wall -Werror – g main.c -o main

n. 使用-O0 选项可以禁用所有编译器优化,使用-O1、-O2 和-O3 逐步打开更多的优化选项。-Og 则在保证调试工作的同时完成了少量的优化。

o. 如果有一些宏需要在编译时代入, 使用-D 选项,例如如下的代码

#include<stdio.h>
int main(void)
{
 #ifdef MY_MACRO
    printf("\n Macro defined \n");
 #endif
 char c = -10;
// Print the string
 printf("\n The Geek Stuff [%d]\n", c);
 return 0;
}

使用如下的命令编译:

gcc -Wall -DMY_MACRO main.c -o main

则会打印输出相应的语句。
————————————————
版权声明:本文为CSDN博主「一只辛巴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lanshi00/article/details/104687072

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值