gcc简单命令记录

CC编译程序过程分四个阶段
1. 预处理(Pre-Processing)
2. 编译(Compiling)
3. 汇编(Assembling)
4. 链接(Linking)


.简单编译命令
我们以Hello world程序来开始我们的学习.代码如下:

/* hello.c */
#include <stdio.h>
int main(void)
{
printf ("Hello world!\n");
r  eturn 0;
}

1. 执行如下命令:
$ gcc -o hello hello.c

输出: Hello,world!
2. 我们也可以分步编译如下:
(1) $ gcc -E hello.c -o hello.i  //预处理结束

//这时候你看一下hello.i ,可以看到插进去了很多东西.
(2) $ gcc -S hello.i
//生成汇编代码后结束
(3) $ gcc -c hello.c
或者:
$ gcc -c hello.c -o hello.o
或者:
$ gcc -c hello.i -o hello.o
//编译结束
//生成 hello.o文件
(4) $ gcc hello.o -o hello.o
或者:
$ gcc -o hello hello.c
//链接完毕,生成可执行代码

3. 我们可以把几个文件一同编译生成同一个可执行文件.
比如:一个工程有main.c foo.c def.c生成foo的可执行文件.
编译命令如下:
$ gcc -c main.c foo.c def.c -o foo
或者:
$ gcc -o foo main.c foo.c def.c
.库依赖
函数库是一些头文件(.h)和库文件(.so或者.a)的集合.Linux下的大多数函数都默认将头文件放到/usr/include/目录下,而库文件则放到/usr/lib/目录下,但并非绝对如此.因此GCC设有添加头文件和库文件的编译选项开关.
1. 添加头文件:-I
例如在/home/work/include/目录下有编译foo.c所需头文件def.h,为了让GCC能找到它们,就需要使用-I选项:
$ gcc foo.c -I /home/work/include/def.h -o foo
2. 添加库文件:-L
例如在/home/work/lib/目录下有链接所需库文件libdef.so,为了让GCC能找到它们,就需要使用-L选项:
$ gcc foo.c -L /home/work/lib -ldef.a -o foo
说明:-l选项指示GCC去连接库文件libdef.so.Linux下的库文件命名有一个约定,即库文件以lib三个字母开头,因为所有的库文件都遵循这个约定,故在用-l选项指定链接的库文件名时可以省去lib三个字母.
[题外语]
Linux下的库文件分为动态链接库(.so文件)和静态链接库(.a文件).GCC默认为动态库优先,若想在动态库和静态库同时存在的时候链接静态库需要指明为-static选项.比如上例中如还有一个libdef.a而你想链接libdef.a时候命令如下:
$ gcc foo.c -L /home/work/lib -static -ldef.a -o foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值