zoukankan      html  css  js  c++  java
  • gcc编译流程

    gcc的编译流程分为四个步骤,分别为:

    1. 预处理(Pre-Processing)
    2. 编译(Compiling)
    3. 汇编(Assembling)
    4. 链接(Linking)

      以hello.c为例子,在这四个步骤中可以设置选项分别生成hello.i, hello.s, hello.o以及最终的hello文件:
          hello.c : 最初的源代码文件;
          hello.i : 经过编译预处理的源代码,将会把#开头的文件进行处理,包括宏以及包含等等,使用gcc -E(大写)命令可以输出此文件查看(注意:不会检查语法,仅仅只是替换而已);
          hello.s : 汇编处理后的汇编代码,使用-S(大写)来进行查看,此命令使得编译器之编译不汇编,此处生成汇编代码;
          hello.o : 编译后的目标文件,即含有最终编译出的机器码,但它里面所引用的其他文件中函数的内存位置尚未定义。汇编阶段是把编译阶段生成的”.s”文件转成目标文件,使用-c(小写)来查看二进制代码。
      a.out:linux下最终的可执行文件。
      .a是静态库,.so(Shared Object)是动态库,.s汇编原文件
     
    库函数:系统把这些函数实现都被做到名为libc.so.6的库文件中去了,在没有特 别指定时,gcc会到系统默认的搜索路径”/usr/lib”下进行查找
    gcc在编译时 默认使用动态库。
    共享archive的文件名形式是libname.sa。共享archive只是一种过渡形式,帮助人们从静态库转变到动态库。)
  • 相关阅读:
    ArrayList用法
    MessageBox
    将文本文件导入Sql数据库
    在桌面和菜单中添加快捷方式
    泡沫排序
    Making use of localized variables in javascript.
    Remove double empty lines in Visual Studio 2012
    Using Operations Manager Connectors
    Clear SharePoint Designer cache
    Programmatically set navigation settings in SharePoint 2013
  • 原文地址:https://www.cnblogs.com/wubugui/p/4247736.html
Copyright © 2011-2022 走看看