转自:

http://www.cnblogs.com/napoleon_liu/archive/2011/05/06/2038698.html

 

gcc 编译 C源码 四个步骤:

1)预处理 Pre-processing  编译器对各种预处理命令进行处理:包含头文件的包含、定义的扩展、条件编译选项等。

指令主要有: #define, #include,  #ifdef ... #endif

 

可以用gcc 的选项“-E” 进行查看。 gcc -E hello.c

2) 编译阶段 Compiling  编译器首先检查代码的规范性、是否有语法错误等,之后把代码翻译成汇编语言。

该阶段只进行编译不进行汇编,生成汇编代码。         编译 -> 汇编代码

可以用“-S” 选项来进行查看。

3) 汇编阶段 Assembling 汇编阶段把编译阶段生成的“.s” 文件转成二进制目标代码。

选项 -c

4) 链接阶段 Link  将目标文件链接成可执行文件

这里涉及到一个重要概念:函数库

ldd命令查看动态库加载情况:

# ldd hello

libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

 

l dd - print shared library dependencies

$ rpm -qf /usr/bin/ldd
glibc-common-2.3.4-2.25 看来一般只要有glibc就有ldd命令,就可用。

 

posted on 2012-03-14 18:30  肯定;爱  阅读(271)  评论(0编辑  收藏  举报