zoukankan      html  css  js  c++  java
  • objcopy 格式转换

    objcopy用于将object的部分或全部内容拷贝到另一个object,从而可以实现格式的变换。

    objcopy可用用于将文件转换成S-record格式或者raw二进制格式。

    例如,

             xxxx-elf-objcopy –O srec test.o test.s19

    则将test.o转换成s-record文件中。通常涉及到text段。

             xxxx-elf-objcopy –O binary test.o test.bin

    则将test.o转换成raw binary文件格式。

           当将object文件转换成raw binary格式时,通常将去除掉symbols和relocation信息。在生成s-record过程中,有时需要用选项“-S”,“-R”去除掉binary文件,s-record文件不需要的相应信息。

    此外,还需要注意到使用objcopy不能够改变大、小endian。

     

    选项

    Desc

    infile/outfile

    源文件/目标文件

    -I bfdname

    --input-target=bfdname

    输入文件的bfdname,可取值elf32-little,elf32-big等,可用用objdump –I查看相应的信息

    -O bfdname

    --output-target=bfdname

    输出文件的bfdname

    -F bfdname

    --target=bfdname

    指定输入、输出文件的bfdname,目标文件格式

    -j sectionname

    --only-section=sectionname

    只将由sectionname指定的section拷贝到输出文件

    -R sectionname

    --remove-section=sectionname

    去除掉由sectionname指定的section

    -S

    --strip-all

    去掉源文件的符号信息和relocation信息

    -g

    --strip-debug

    去除掉调试符号信息和相关的段

    -K symbolname

    --keep-symbol=symbolname

    保留由symbolname指定的符号信息

    -N symbolname

    --strip-symbol=symbolname

    去除掉由symbolname指定的符号信息

    -G symbolname

    --keep-global-symbol=symbolname

    -L symbolname

    --localize-symbol=symbolname

    -W symbolname

    --weaken-symbol=symbolname

    -w

    --wildcard

    -x

    --discard-all

    -X

    --discard-locals

    处理符号

    -b byte

    --byte=byte

    每byteth byte中保留1 byte

    -i interleave

    --interleave=interleave

    每隔interleave字节拷贝1 byte

    --gap-fill val

    在section中填充val

    --set-start val

    设定新文件的start address

    --change-start incr

    --adjust-start incr

    调整start address

    --change-address incr

    --adjust-vma incr

    调整所有sections的VMA(virtual memory address)和LMA(linear memory address)。

    --change-section-address

            section{=,+,-}val

    --adjust-section-vma section

           {=,+,-}val

    调整指定section的VMA/LMA地址

    --set-section-flags section=flag

    指定指定section的flag,flag的取值可以alloc,contents, load, noload, readonly, code, data, rom, share, debug

    --add-section sectionname=filename

    添加一个section,该section的内容为filenmae的内容

    --rename-section oldname=

        newname[,flags]

    更改section的名

    -V

    --version

    objcopy的version number

     

     

     

     

     

     

     

     

  • 相关阅读:
    向你的C语言项目中加入多线程
    <解析>speaker verification模型中的GE2E损失函数
    【笔记】 springCloud-configServer配置中心
    springboot--ActiveMQ--消息队列
    Fdfs上传的图片批量删除
    【笔记】负载均衡Robbin之不同服务使用不同的策略
    【笔记】Ribbon负载均衡伪随机算法
    【笔记】01 -- Spring-Cloud介绍
    linux防火墙
    SpringBoot起飞系列-使用idea搭建环境(二)
  • 原文地址:https://www.cnblogs.com/god-of-death/p/14892792.html
Copyright © 2011-2022 走看看