zoukankan      html  css  js  c++  java
  • 交叉工具链和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

  • 相关阅读:
    C++11 序列化库 cereal
    Eigen 3.3.7 数组类(Array)和元素操作
    Java【 final、权限、内部类、引用类型】学习笔记
    Java多态学习笔记
    学习GUI编程第二天笔记
    GUI编程小测试
    第一篇学习笔记(Typora使用手册)
    Spring Boot2 系列教程(九)Spring Boot 整合 Thymeleaf
    Spring Boot2 系列教程(七)理解自动化配置的原理
    Spring Boot2 系列教程(六)自定义 Spring Boot 中的 starter
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/8312905.html
Copyright © 2011-2022 走看看