• 【无标题】


    一 、arm-linux-ld是一个链接程序工具,其作用主要是将汇编过的多个二进制文件进行链接,成为一个可执行的二进制文件,这个命令的选项有好多,具体用到的时候大家可以使用--help 选项来查看具体的选项用法。

    二、选项用法选项用法:

    下面将几个重要的命令介绍一下:
    -T File     --script FILE指定一个链接器脚本文件,指示编译器按照脚本进行链接;
    -Tbss ADDRESS    bss段的链接地址;
    -Ttext ADDRESS   代码段链接地址;
    -Tdata ADDRESS  数据段链接地址;
    -r --relocateable 产生可重定向的输出,比如,产生一个输出文件它可再次作为‘ld'的输入,这经常被叫做“部分链接”,当我们需要将几个小的.o文件链接成为一个.o文件的时候,需要使用此选项。
    -e  指定程序的入口标号;
    -l   LibName 指定要链接的库;
    -L  Directory 增加库文件的搜索路径;
    -o  FILE 设置输出文件名;
    -O  输出文件最优;

    -a  指定arch体系;

    例如:

    arm-linux-ld -Ttext 0x10000000 main.o -o main_elf

    这句话是将main.o 文件连接成ELF格式文件,在连接的过程中,-Ttext 0x10000000这个选项告诉连接器我的这段main.o程序需要被加载到RAM的0x10000000地址处执行。所以在连接的时候main.o第一条语句的连接地址就是0x10000000,第二条语句就是跟在其后面。有很多人都议论连接地址和运行地址这个怎么说的都有。运行地址可以等于连接地址,还可以认为运行地址是pc指针指向的地址,就是正在执行指令的地址。只要理解了这个概念就可以了。
    ————————————————

    三  、arm-linux-objcopy被用来复制一个目标文件的内容到另一个文件中.此选项可以进行格式的转换.在实际编程的,用的最多的就是将ELF格式的可执行文件转换为二进制文件.

        如:         Arm-linux-objcopy –o binary –S elf_file bin_file

        其实还有重要就是导出和添加符号表

           objcopy —only-keep-debug main.so main.dbg

           objcopy —add-gnu-debuglink=main.dbg main_release.so​

      四、常用选项:

      1.input-file、outfile

            输入输出文件.如果没有outfile,则输出文件名为输入文件名.

     2 .-l    bfdname或—input-target=bfdname

            用来指明源文件的格式,bfdname是BFD库中描述的标准格式名,如果没指明,则arm-linux-objcopy自己分析.

    3.  -O bfdname

      输出的格式.

    4.  -F bfdname

         同时指明源文件,目的文件的格式.

    5.-R sectionname

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

    6.-S

        不从源文件中复制重定位信息和符号信息到目标文件中.

    7.-g  不从源文件中复制调试符号到目标文件中.

    五.arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码
    六.常用选项:
    1.-b bfdname 指定目标码格式
    2.—disassemble或者-d 反汇编可执行段
    3.—dissassemble-all或者-D 反汇编所有段
    4.-EB,-EL指定字节序
    5.—file-headers或者-f 显示文件的整体头部摘要信息
    6.—section-headers,--headers或者-h 显示目标文件中各个段的头部摘要信息
    7.—info 或者-I 显示支持的目标文件格式和CPU架构
    8.—section=name或者-j name显示指定section 的信息
    9.—architecture=machine或者-m machine 指定反汇编目标文件时使用的架构

    七.示例

    Arm-linux-objdump –D elf_file > dis_file #或者 Arm-linux-objdump –D –b binary –m arm bin_file > dis_file

  • 相关阅读:
    【力扣每日一题】2023.9.28 花期内花的数目
    从 HPC 到 AI:探索文件系统的发展及性能评估
    【软考-中级】系统集成项目管理工程师-立项管理历年案例
    根据身高重建队列
    【SpringBoot】
    干货丨数据仓库工具hive面试题集锦
    【OSTEP】超越物理内存:机制 | 请求分页 | 交换位与存在位 | 页错误
    FFmpeg 的简介与安装
    迭代与递归--你被递归搞晕过吗?
    spring源码下载安装,导入idea以及编译报错问题详细解决过程
  • 原文地址:https://blog.csdn.net/gezi322/article/details/127681648