zoukankan      html  css  js  c++  java
  • [国嵌笔记][016][交叉工具链]

    交叉工具链

    1.交叉工具是编译在arm平台上运行程序的工具,交叉工具链是交叉工具的集合

    2.file filename    

    通过file命令可以查看程序运行的平台等相关信息

    3.交叉开发    

    1.在x86平台上产生其他平台上运行程序的模式叫做交叉开发  

    2.宿主机是产生嵌入式软件的平台,目标机是运行嵌入式软件的平台

    常用的交叉工具

    1.交叉编译器  

    arm-linux-gcc  

    相同之处

    arm-linux-gcc file.c -o file

    与gcc用法上一样  

    不同之处   

    gcc从 /usr/include/ 下寻找头文件   

    arm-linux-gcc从 /usr/loacl/arm/.../lib 下寻找头文件   

    arm-linux-gcc -print-search-dirs   查看头文件路径,通过--help可以找到这个选项

    2.交叉链接器  

    arm-linux-ld -Tfile.lds file1.o file2.o... -o file.elf  

    把file1.o file2.o和file.lds链接成led.elf文件

    3.交叉ELF读取器  

    1.arm-linux-readelf -a file.elf   

    在输出信息的Data中可以看到运行的大小端模式,Machine中可以看到运行的处理器  

    2.arm-linux-readelf -d file.elf   

    可以查看程序运行的动态运行库信息  

    3.一般程序运行不了,可以通过file查看程序的处理器和大小端,readelf -a 查看程序的处理器和大小端,readelf -d 查看程序的动态运行库信息

    4.交叉反汇编器  

    1.arm-linux-objdump -D -S file >dump   

    把反汇编file文件信息输入到dump中保存  

    2.arm-linux-gcc -g file.c -o file   

    可以在反汇编代码时中加入C语言的信息,方便阅读代码

    5.交叉转换器  

    1.arm-linux-objcopy -O binary file.elf file.bin   

    "-O binary"表示输出的是二进制格式,把输入文件file.elf转换成file.bin输出  

    2.通过arm-linux-gcc生成的程序都是elf格式的程序,不能直接在arm处理器上运行。在Linux系统有elf转换器,可以把elf格式文件转换成二进制文件运行。所以要直接在arm处理器上运行需要把elf格式转换成二进制格式

  • 相关阅读:
    Sql中CHARINDEX用法
    Ubuntu 18.04 配置ibus中文拼音输入法(超简单)
    win10使用教程(电脑windows系统基础使用教程快速入门手册图文详解)
    angularjs中$scope是什么意思
    angularjs中$scope是什么意思?
    005列表标签
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
  • 原文地址:https://www.cnblogs.com/d442130165/p/4885824.html
Copyright © 2011-2022 走看看