码迷,mamicode.com
首页 > 其他好文 > 详细

gcc编译的四个阶段:预处理,编译,汇编,链接

时间:2015-12-25 13:21:57      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

1gcc编译的四个阶段:预处理,编译,汇编,链接

#vi file.c

#gcc -E file.c -o file.i//-E查看且预处理后停止编译,-o生成目标文件,-i表示已预处理

#gcc -S file.i -o file.s//-S编译到汇编而不进行汇编和链接

#gcc -c file.s -o file.o//-c编译到目标代码

#gcc file.o -o file//-o 文件输出到文件

# gcc -static file.c -o file//-static禁止使用动态库

 

;Makefile基本规则

  1 alltest

  2 echo “Hello World”

  3 test:

  4 @echo “Hi Hi”

    ;Tab键空格

alltest是目标

;2,4是生成目标的命令

#make(默认运行1),&make all ,&make test

 

;Makefile 依赖关系

  1 simple:main.o foo.o bar.o

  2         gcc -o simple main.o foo.o bar.o//执行命令

  3 main.o:main.c

  4         gcc -c main.c -o main.o//生成命令

  5 foo.o:foo.c

  6         gcc -c foo.c -o foo.o

  7 bar.o:bar.c

  8         gcc -c bar.c -o bar.o

  9 clean:

  10         rm *.o//清楚生成的文件

simple依赖于:main.o foo.o bar.o

;三个.o文件又依赖于三个.c文件

#touch foo.c bar.c//不写main函数,多次定义报错

#vi main.c//写上main函数

#make clean//执行10

 

 

 

 

 

 

;假目标:.PHONY

  1 .PHONY:clean

  2 test:

  3         echo "Hello"

  4 clean:

  5         rm *.c

;当目录中有其他clean时,可以使用假目标不与文件关联

 

;#vi test.c

#gcc -c test.c

# ls

test.c  test.o(目标文件)

#gcc -o test(可执行文件) test.o

# ls

test  test.c  test.o

 

 

;一个主程序调用另一个子程序

# cat test.c test2.c

#include<stdio.h>

int main()

{printf("你好啊,我是有主啊\n");

   test_2();

   return 0;}

------------------------------------------

void test_2(void)

{printf("谢谢啦,你也好啊!\n");

 return 0;}

# gcc -c test.c test2.c 

test2.c  test2.o  test.c  test.o

# gcc -o test test.o test2.o

test  test2.c  test2.o  test.c  test.o

 

gcc编译的四个阶段:预处理,编译,汇编,链接

标签:

原文地址:http://www.cnblogs.com/zhome/p/5075361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!