1、环境: ANSI C的任何一种实现中,存在这两种环境:翻译环境、执行环境。这两种
环境不必位于同一个及其上。还有就是一种独立环境,就是不存在操作系统的环境(
嵌入式系统中会遇到类似环境。
2、翻译环境的几个步骤及在gcc下的命令:
预处理(预编译):预处理器在源码上执行一些文本操作。这个过程处理宏定义和include,并做语法检查。gcc -E a.c -o a.i
编译: 这个阶段,生成汇编代码。 gcc -S a.i -o a.s
汇编过程:这个阶段,生成目标代码。此过程生成ELF格式的目标代码 gcc -c a.s -o a.o
链接过程: 链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。
3、gcc编译和链接的几种方法:
以下为转载: http://www.linuxidc.com/Linux/2011-01/31227.htm
1.单个文件编译
编写源文件hello.c
编译:gcc hello.c
生成a.out
指定生成文件名:gcc -o test hello.c
生成test
2.编译成目标文件