Linux Gcc小结

Gcc是GNU推出的多平台编译器。

Gcc用法: gcc [options] filenames 

options:编译器所需要的编译选项
filenames: 要编译的文件名 

 

基本用法:

先编写一个简单hello.c文档如下
#include <stdio.h>
int main(void)
{
printf (Hello world!\n);
return 0;

}

在终端输入:gcc hello.c  则会在本文件夹输出一个a.out的执行文件,输入./a.out即可有结果

若输入:gcc hello.c -o [+新名字],则gcc就给出可执行新名称文件

 

Gcc编译流程

Hello.c → 预处理 → Hello.i → 编译 → Hello.s → 汇编 → Hello.o → 链接 → Hello.i

Hello.c → 预处理 → Hello.i 终端输入gcc -E hello.c -o hello.i

Hello.i → 编译 → Hello.s 终端输入gcc -S hello.c -o hello.s

Hello.s → 汇编 → Hello.o 终端输入gcc -c hello.c -o hello.o

Hello.o → 链接 → Hello.i 终端输入gcc -o hello.c -o hello

 

Gcc通过后缀来区别输入文件的类别,常见类型有:
 .c 为后缀的文件: C语言源代码文件
 .a 为后缀的文件: 是由目标文件构成的库文件
 .C,.cc或.cxx  为后缀的文件: 是C++源代码文件
 .h 为后缀的文件: 头文件
 .o 为后缀的文件: 是编译后的目标文件
 .s 为后缀的文件: 是汇编语言源代码文件 

 

 

Gcc编译选项

-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地
要慢一些。
-O2,比-O更好的优化编译、连接,当然整
个编译、连接过程会更慢 

例子:gcc -O hello.c -o hello 用time hello来检查时间

#include <stdio.h>
int main(void)
{
double counter;
double result;
double temp;
for (counter = 0; counter < 2000.0 * 2000.0 * 2000.0 / 20.0 + 2020;counter += (5 - 1) / 4)

  {
temp = counter / 1979;
result = counter;
}

printf(Result is %lf\\n, result);
return 0;
} 

 

gcc -c hello.c:只会产生hello.o中间文件

 

gcc -g hello.c -o hello:产生调试工具所需要的符号信息

 

I dirname:将dirname所指出的目录作为编译器寻找头文件的标准路径

C语言头文件:

①#include <A.h>

②#include “B.h”

对于<>,gcc在系统预设的头文件目录(如/usr/include)中搜寻相应的文件;对于“”,gcc在当前目录中搜寻头文件。-I选项的作用是告诉gcc,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找

例:gcc foo.c -I/home/include -o foo

 

编译错误是代码中出现语法错误,程序无法执行。编译警告是编译器发现程序中不合理的地方,建议最好修改,但不修改也能执行。

-Wall:生成所有警告信息

-w:不生成任何警告信息

gcc -Wall hello.c -o hello

gcc -w hello.c -o hello

 

-DMACRO: 定义 MACRO 宏,等效于在程序中使用#define MACRO 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值