`
xiaobaiso
  • 浏览: 21930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

c语言的编译过程

 
阅读更多

 

http://hi.baidu.com/wangsl1978/blog/item/89229516a59a0512c83d6d01.html

先感谢这篇文章 介绍了ld的库文件怎么引用的

代码如下

----------------------- test.c-----------------------------

#include<stdio.h>

Void mian()

{

       Printf(“hello”);

}

 

今天看了下编译的过程,gcc –o test text.c   是一步到位的做法

 

要像一步一步做出来 了解怎么编译的,是这样的

 

[root@localhost workspace]# cpp test.c test.i

得到了预处理文件。

 

[root@localhost 4.1.1]# cc1 test.c  test.s

这里就得到了编译后的文件

这里cc1命令不一定在环境变量中,gcc -v hello.c 2>&1 |grep cc1  可以看到cc1在哪个目录下  执行的时候可以把test.c移到该文件夹下 ./cc1

 

[root@localhost 4.1.1]# as -o test.o test.s

现在得到了汇编文件

 

[root@localhost 4.1.1]# ld -dynamic-linker /lib/ld-linux.so.2 -o  test   /usr/lib/crt1.o     /usr/lib/crti.o   test.o   -lc     /usr/lib/crtn.o

 

得到了test

[root@localhost 4.1.1]# ./test
hello[root@localhost 4.1.1]# 

 

 

最终编译完成了

 

 

下面是扩展  这篇文章对编译有一个具体的讲述

http://blog.csdn.net/eroswang/article/details/5983791

 

 

这里写一点我的理解:

1.

在命令行定义宏:gcc -Dmacro hello.c
等同于在文件的开头定义宏,即#define maco,但是在命令行定义更灵活。例如,在源代码中有这些语句。
#ifdef DEBUG
printf("this code is for debugging/n");
#endif
    如果编译时加上-DDEBUG选项    (要多加一个D),那么编译器就会把printf所在的行编译进目标代码,从而方便地跟踪该位置的某些程序状态。这样-DDEBUG就可以当作一个调试开关,编译时加上它就可以用来打印调试信息,发布时则可以通过去掉该编译选项把调试信息去掉。

 

 

2

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    c语言编译过程详解.docx

    c语言编译过程详解.docx ,c语言编译过程详解.docx

    C语言编译全过程

    C语言编译全过程

    c语言编译全过程

    c语言编译全过程c语言编译全过程c语言编译全过程

    c语言编译过程想详解

    详细讲解c语言的编译过程,并附有图解 很好的资料

    C语言编译过程总结详解

     从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。  编译过程  编译过程又可以分成两个阶段:编译和会汇编。  编译  编译是读取源程序...

    C语言编译过程

    编译的概念:编译程序读取源程序(字符流),对之进行词法和... 编译的完整过程:C源程序--&gt;预编译处理(.c)--&gt;编译、优化程序(.s、.asm)--&gt;汇编程序(.obj、.o、.a、.ko)--&gt;链接程序(.exe、.elf、.axf等)

    (C语言编译连接过程

    C语言编译连接过程描述了

    C语言编译全过程剖析

    编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。

    C语言编译全过程.pdf

    技术资料 \C语言ppt\C语言编译全过程.pdf 学习C

    C语言编译过程中的错误分析

    C语言编译过程中的错误分析,语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程

    EDA/PLD中的C语言编译过程总结详解

     从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。  编译过程  编译过程又可以分成两个阶段:编译和会汇编。  编译  编译是读取源程序...

    c语言编译过程详解,预处理,编译,汇编,链接

    我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令。让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。预处理展开头文件/宏替换/...

    编译原理 词法分析 语法分析 优先分析表 中间代码生成

    编译原理 词法分析 语法分析 优先分析表 中间代码生成

    c语言 编译原理 分词

    c语言 编译原理 分词 定义Token表示右部的值。 检查语义错误: (标识符声明、定义和使用) 没有声明;重复声明;类型不相容 符号表 (标识符名,地址,类型) 过程:读入Token 遇到标识符声明时,检查是否已...

    C语言编译全过程介绍

    大家都知道把C文件写好编译生产HEX文件,就能跑代码了,哪知道编译的过程吗?作为嵌入式开发工程师知道编译的过程还是很有必要的

    程序员考试c语言的编译过程

    C语言的编译过程 编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行...

    C语言编译原理

    C语言的编译过程很有趣,从预处理,编译,汇编,链接,每一步都很重要,但是很少人关注这些。这是我自己总结的,希望能帮到大家!

Global site tag (gtag.js) - Google Analytics