gcc的使用

一、gcc编译过程示意图 

 

分析:

hello程序是一个高级C语言程序,这种形式容易被人读懂。为了在系统上运行hello.c程序,每条C语句都必须转化为低级机器指令。然后将这些指令打包成可执行目标文件格式,并以二进制形式存储器于磁盘中。

 

gcc常用选项:

选项名

作用

  -o

产生目标(.i.s.o、可执行文件等)

  -c

通知gcc取消链接步骤,即编译源码并在最后生成目标文件

  -E

只运行C预编译器

  -S

告诉编译器产生汇编语言文件后停止编译,产生的汇编语言文件扩展名为.s

-Wall

使gcc对源文件的代码有问题的地方发出警告

-Idir

dir目录加入搜索头文件的目录路径

-Ldir

dir目录加入搜索库的目录路径

-llib

链接lib

-g

在目标文件中嵌入调试信息,以便gdb之类的调试程序调试

 

举例说明:

gcc -E hello.c -o hello.i(预处理)
gcc -S hello.i -o hello.s(编译)
gcc -c hello.s -o hello.o(汇编)
gcc hello.o -o hello(链接)
gcc hello.c -o hello(直接编译链接成可执行目标文件)
gcc -c hello.c或gcc -c hello.c -o hello.o(编译生成可重定位目标文件)

 

二、gcc编译多文件

文件:
hello_fn.h
hello_fn.c
main.c

一次性编译
gcc  hello_fn.c main.c –o newhello

独立编译
gcc -Wall -c main.c -o main.o
gcc -Wall -c hello_fn.c -o hello_fn.o
gcc -Wall main.o hello_fn.o -o newhello


1. 测试代码:

//hello_fn.c
#include <stdio.h>
#include "hello_fn.h"

void hello(const char* name)
{
	printf("hello %s!!!\n", name);
}
//hello_fn.h
#ifndef _HELLO_FN_H
#define _HELLO_FN_H

void hello(const char* name);

#endif
//main.c
#include "hello_fn.h"

int main(void)
{
	hello("everyone");
	return 0;
}

输出结果:

方法1:

方法二:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值