zoukankan      html  css  js  c++  java
  • 编译选项

    arm-linux-gcc选项

    一个c文件要经过预处理、编译、汇编和连接等4步才能那个变成可执行文件。

    预处理:生成*.i文件

      以#号开头的命令被称为预处理命令,如包含命令#include、宏定义命令#define、条件编译命令#if, #ifdef等。预处理就是将要抱哈那个的文件插入源文件中、

    将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些代码输出到一个“.i”文件中等待进一步处理。预处理将用到arm-linux-cpp工具

    编译: 生成汇编文件, *.s文件

      编译就是代码翻译成汇编代码,比如上述的“.i”文件。所用到的工具是ccl

    汇编: 生成*.o文件

      汇编就是将编译阶段输出的汇编代码翻译成符合一定格式的机器代码,在linux系统能够上面一般表现为

    ELF目标文件(OBJ文件),用到的工具为arm-linux-as

    连接: 生成可执行文件

      链接就是将上述生成的OBJ文件和系统库OBJ问年连接起来,最终生成可以在特定平台运行的可执行文件用到的工具为arm-linux-ld

     对于arm-linux-gcc

       加上-v选项,可以观看编译的细节

      -c  预处理、编译和汇编源文件,但是不做链接,编译器根据源文件生成OBJ文件。

      -S 编译后即停止,不进行汇编

      -E 预处理后即停止,不进行编译。

      -o file 指定输出文件为file

    arm-linux-ld用于将多个目标文件、库文件连接成可执行文件。

    其中 “-T”选项可以直接使用它来指定代码段、数据段、bss段的起始地址,也可以用来指定一个连接脚本,在连接脚本中进行更复杂的地址设置。

    -T选项只用于连接Bootloader、内核等“没有底层软件支持”的软件;连接运行于操作系统之上的应用程序时,无需指定-T选项,他们使用默认的连接方式进行连接。

    -Ttext startaddr 代码段的其实地址为startaddr

    -Tdata startaddr 数据段的起始地址为startaddr

    -Tbss startaddr bss段的起始地址为startaddr

    arm-linux-ld -Ttext 0x00000000 -g led_on.o -o led_on_elf

    它表示代码段的运行地址为0x00000000, 由于没有定义数据段、bss段的起始地址,他们被一次放在代码段的后面。

  • 相关阅读:
    SparkSql初级编程实践
    云时代架构之苏宁安全架构演进及实践
    云时代架构之知乎网站架构变迁史
    质量属性的六个常见属性场景之《淘宝网》
    云时代架构之游戏服务器的架构演进
    《架构漫谈阅读心得》
    转换后缀表达式
    约瑟夫环(改进3.0)
    栈结构之后缀表达式
    约瑟夫环(改进2.0)
  • 原文地址:https://www.cnblogs.com/cheyihaosky/p/11562330.html
Copyright © 2011-2022 走看看