原创 【转载】从源代码到可执行文件的过程中的术语

2008-10-20 18:24 2665 5 5 分类: 软件与OS

  • ★预处理(Preprocess)

    • 以gcc为例,从源代码生成了.i文件,可用编辑器查看,非常大。
    • 要单独做这一步,可用gcc结合相应的命令行开关实现,或者用cpp工具。
    • 事实上gcc就是调用了cpp工具,下面类似的情况也是这么个原理。
    • 这一步就是展开了源代码里的宏,并把头文件的内容也添加了进去,要不怎么那么大呢?

  • ★编译(Compile)

    • 以gcc为例,从.i生成了.s文件(Win32平台上一般叫.asm),就是汇编源代码,可用编辑器查看。

  • ★汇编(Assemble)

    • 以gcc为例,从.s生成了.o文件(Win32平台上一般叫.obj),这已经是机器码了。
    • 要单独做这一步,可用gcc结合相应的命令行开关实现,或者用as工具。

  • ★链接(Link)

    • 把所有.o链接起来(用到.lib的会把.lib链接进去),生成可执行文件。
    • 要单独做这一步,可用gcc结合相应的命令行开关实现,或者用ln工具。

  • ★Build


    • 这个词可能来自于IDE,现在的IDE即使是写一个小程序也要用到很多文件,所以有了Build这个概念。
      点击Build就会该编译的编译,该链接的链接,哪怕是Win32下的资源也会被编译进可执行文件,总之,一口气生成了最后你要的可执行文件。


  • ★Make


    • 源于make程序。
      特别是在Linux的环境下,使用gcc命令一个个文件编译是很痛苦的,通常都是写一个makefile,然后用GNU make来按照makefile里的说明来从源代码生成可执行文件(一般就是调用gcc来完成每一步)。
      即使是使用IDE,在比较底层的地方,IDE还是调用了自带的make来生成.o文件或最终的可执行文件。  


●另注:


  gcc与g++的一个重要区别在于,前者在编译C++程序时不能自动链接lib,所以在编译C++程序时比较常用g++。


  VC中的stdafx.h最大的作用在于VC要用它来生成预编译头文件(.pch),以提高平均编译速度。而gcc也提供预编译头文件功能(.gch),方法类似于stdafx.h。比如你可以写一个foo.h,里面包含好你工程中要用到的头文件,用gcc单独编译foo.h,就会生成foo.gch,有了这个文件,将极大的提高之后该工程的编译速度。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条