• 交叉工具链和makefile


    交叉工具链:

    arm-linux-gcc:交叉编译器

    arm-linux-ld:交叉连接器

    arm-linux-readelf:交叉ELF文件工具

    arm-linux-objdump:交叉反汇编器

    arm-linux-objcopy:交叉转换器

    -a 是显示该文件的信息

    -O bfdname 输出的格式

    -F bfdname 同时指明源文件,目的文件的格式

    -R sectionname 从输出文件中删除掉所有名为sectionname的段

    -S 尽可能反汇编出源代码

    -D 显示文件中所有汇编信息,反汇编

    -c 只编译不链接  

    -g 附加调试信息:C和汇编能对应起来

    -T跟上链接器脚本文件          可参考这篇博客:http://man.linuxde.net/objdump

    arm-linux-readelf -d hello 查看这个应用程序需要那些库

    file 这个文件,可以看到这个文件在什么平台上运行(x86或者ARM等等)

    arm-linux-objdump:反汇编工具

    arm-linux-objcopy -O binary led.elf led.bin:-O是指定输出什么格式的文件,是binary(二进制),后面跟上输入文件和输出文件

    makefile:make工作主要依赖于一个叫做Makefile的文件,这个文件描述了整个程序的编译、连接等规则。其中包括:那些源文件需要编译以及如何编译,如何最后产生我们想要的执行文件。

    目标:依赖

      命令

    all: led.o
      arm-linux-ld -Tled.lds -o led.elf led.o
      arm-linux-objcopy -O binary led.elf led.bin

    led.o : led.S
      arm-linux-gcc -g -o led.o -c led.S

    .PHONY: clean
    clean:
      rm *.o led.elf led.bin

    make 后面跟 你想要的那个文件,就会去执行makefile里的只生成你需要文件的命令

    make后面不接,就执行makefile里的第一条命令,所以称第一条规则里的就是最终目标

    去回显

    make -f file

    all: start.o main.o mmu.o led.o button.o interrupt.o
      arm-linux-ld -Tgboot.lds -o gboot.elf $^
      arm-linux-objcopy -O binary gboot.elf gboot.bin

    %.o : %.S
      arm-linux-gcc -g -c $^

    %.o : %.c
      arm-linux-gcc -g -c $^

    .PHONY: clean
    clean:
      rm *.o *.elf *.bin

  • 相关阅读:
    基金定投是什么?定投的特点?
    Linux环境下MySQL 5.6安装与配置----亲测有效----纯离线安装
    OI生涯回忆录
    NOI2020游记
    Redis操作
    Redis概述
    Memcached
    动态规划——最长回文字符串
    两数之和&无重复字符最长字符串
    黑盒测试常见方法
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/8312905.html
Copyright © 2020-2023  润新知