zoukankan      html  css  js  c++  java
  • 编译工具链

    GCC命令:

    格式:gcc -[命令选项]  文件名(这里指需要编译的文件名)

    一个C语言程序需要经过这几个过程才能进行一个可以执行的文件

    例如hello.c这个源文件

    Hello.c——> hello.i——>hello.s——>hello.o——>hello

      -E          -S        -C          

    将一个汇编文件编译成一个可以烧写到开发板中二进制文件的步骤

    (1)执行命令arm-linux-gcc -c -g  XXX.S (注意最后的扩展名是大写)

    (2)执行命令arm-linux-gcc -T  XXX.lds -o  XXX.elf  XXX.o

    (3)执行命令arm-linux-objcopy  -O binary  XXX.elf  XXX.bin (注意第一命令选项是大写的O)

    编译工具链:
    arm-linux-gcc

    例子:arm-linux-gcc  -g -c  led.S

    注释:-g -c 将只编译不连接,编译后将产生一个led.o的文件

    arm-linux-ld

    例子:arm-linux-ld -Tled.lds -o led.elf  led.o

    注释:-T 后接脚本文件,生成.elf 格式的文件 最后面接文件需要连接的 所有.o 格式的文件

    arm-linux-readelf

    例子:arm-linux-readelf  -a led.elf

    注释:用于读取.elf文件的所有信息

    例子:arm-linux-readelf -d  hello

    注释:用于读取编译成功的文件需要哪些库的信息

    arm-linux-objdump

    例子:arm-linux-objdump -D -S hello

    注释:用于将一个已经编译好的文件进行反汇编

    例子:arm-linux-objdump -D-S hello >dump

    注释:将一个编译好的可执行hello文件进行反汇编, >用于反汇编后文件过大将反汇编文件保存在一个叫dump的文件中。

    但是这样的反汇编代码不易阅读,做如下改进:

    1arm-linux-gcc  -g helo.c -o hello

    注释:-g 表示调试编译

    (2)arm-linux-objdump -D-S hello >dump

    注释:将一个调试编译的文件反汇编后保存在文件dump中。这样的反汇编文件易于阅读

    arm-linux-objcopy -O binary led.elf -o led.bin

    注释:直接用gcc编译的出来的文件是一个.elf格式的文件,只能运行与linux平台,因为linux中有一个elf解释器。将其解释成可以执行的文件。所以需要将其装换成二进制文件。-O binary 表示将其转换成二进制文件后跟需要转换的文件

    以上过程过于复杂:

    Make命令可以直接将以上三个过程一步执行

  • 相关阅读:
    css3 文本超出后出现省略号
    Bootstrap 开关(switch)控件需要注意的问题
    angularJs 使用中遇到的问题小结【一:关于传参】
    ctrl+enter提交留言
    div a块状布局
    模态框 快速选定合适的布局
    ionic 项目分享No.2——简化版【转】
    jquery判断div是否显示或者隐藏
    phpsotrm 设置命名空间
    win10 cmd 替换 powershell
  • 原文地址:https://www.cnblogs.com/big-devil/p/8589421.html
Copyright © 2011-2022 走看看