一,GCC用法实例
程序 hello.c
#include <stdio.h>
int main(void)
{
printf("Hello,Linux programming world!\n");
return 0;
}
$gcc hello.c -o hello //告诉GCC对源程序进行编译/链接,使用 -o 指定创建名为hell.o 的可执行程序
$./hello //执行这个程序
Hello,Linux programming world!
整个过程细节
1,GCC首先运行预处理程序cpp展开hello.c 中的宏,并在其中插入#include 文件所包含的内容
2,把预处理后的源代码,编译成目标代码
3,最后,链接程序建立一个名为,hello 的二进制文件
手工操作重新创建这些步骤:
1, $gcc -E hello.c -o hello.cpp // -E告诉GCC在预处理后,停止编译过程
此时你打开 预处理后的 hello.cpp 文件你将会看到 扩展宏并插入 #include <stdio.h>后的内容
2,gcc -x cpp-output -c hello.cpp -o hello.o // 将hello.cpp 编译为目标代码
-x 表示 GCC从指定的步骤开始编译,这里就是从预处理后开始编译。
3,gcc hello.o -o hello //链接目标文件,生成二进制代码
二,多个源码文件组成的C程序的编译
程序helper.c
#include <stdio.h>
void msg()
{
printf("This message sent from tianshuai\n");
}
程序helper.h
void msg();
修改后的hello.c
#include <stdio.h>
#include "helper.h"
int main(void)
{
printf("Hello,Linux programming world!\n");
msg();
return 0;
}
$gcc hello.c helper.c -o hello //同时编译两个文件
三,makefile 的使用
如果含有多个源文件的程序,编译命令打起来比较费劲。所以采用makefile文件,跟make 指令
首先确定已经建立了hello.c helper.c helper.h三个文件
然后在以上三个文件的目录下,建立makefile文件
hello: hello.o helper.o helper.h //默认目标体;要编译成文件 hello 其中有三个依赖体
gcc hello.o helper.o -o hello //调用gcc 命令 供 make执行来创建hello
helper.o: helper.c helper.h //怎样产生单个文件
gcc -c helper.c
hello.o:hello.c
gcc -c hello.c
hello:hello.c helper.c //这里hello 依赖两个文件 hello.c helper.c
gcc hello.c helper.c -o hello
all:hello
clean:
rm hello *.o
说明:
$make // 编译成hello 程序
如果只想生成 hello.o helper.o
$make hello.o helper.o