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段的起始地址,他们被一次放在代码段的后面。

  • 相关阅读:
    [分治FFT]「CTSC2018」青蕈领主
    [边分治+线段树合并]「CTSC2018」暴力写挂
    [模板]MTT
    [模板]NTT
    [矩阵求逆+二分图匹配]BZOJ 3168 [Heoi2013]钙铁锌硒维生素
    [BZOJ1925][SDOI2010]地精部落(DP)
    [BZOJ1047][HAOI2007]理想的正方形(RMQ+DP)
    [POJ3630]Phone List (Tire)
    [POJ1193][NOI1999]内存分配(链表+模拟)
    [POJ2823]Sliding Window 滑动窗口(单调队列)
  • 原文地址:https://www.cnblogs.com/cheyihaosky/p/11562330.html
Copyright © 2011-2022 走看看