当前位置: 首页 > news >正文

binutils工具集——objcopy的用法

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

一、工具简介

objcopy主要用来转换目标文件的格式。

在实际开发中,我们会用该工具进行格式转换内容删除

(1)在链接完成后,将elf格式的.out文件转化为bin格式的文件。

#复制:将可执行程序test_adr.elf从一种二进制格式(elf)转换成另外一种二进制格式(bin)
arm-linux-objcopy -O binary -S test_adr.elf test_adr.bin 

(2)(通过-g、-S等选项)删除文件正常运行时不需要的内容,比如符号表、重定位表、调试信息等。裁剪后其体积比原来小很多,可以节省flash资源。当flash空间不足时,我们可以先查看文件中是否存在运行时非必需的内容,并利用objcopy工具删除。

arm-linux-objcopy -g -S -O elf32-littlearm test_adr.elf test_adr2.elf
#或者写成                         
arm-linux-objcopy -g -S test_adr.elf -O elf32-littlearm test_adr2.elf

二、使用方法

通过man手册,可知该工具使用格式如下。

objcopy [options] infile [outfile]   #[]表示该项是可选的

(1)其中options表示选项,有很多可选的,这里仅列出一些常用的选项。

选项描述

-g

--strip-debug

表示不要将源文件中的调试信息拷贝到输出文件中。

-S

--strip-all

表示不要将源文件中的重定位信息标号信息拷贝到输出文件中。

-F bfdname

--target=bfdname

指明源文件的格式是bfdname,同时也使用这个格式来写输出文件。bfdname是BFD库中描述的标准格式名,包括binary(二进制文件格式)、srec(S记录格式)、elf32-i386等。

-I bfdname(大写i)

--input-target=bfdname

指明源文件的格式是bfdname。明确告诉objcopy源文件的格式,比“objcopy自己去分析源文件的格式”高效。

-O bfdname

--output-target=bfdname

表示输出文件的格式是bfdname。

-R sectionpattern

--remove-section=sectionpattern

表示从输出文件中删除名为sectionpattern的段。这个选项可以多次使用,即可以“-R section1 -R section2”这样使用。不恰当地使用这个选项可能会导致输出文件不可用。

(2)下面是一些实例说明。

  • objcopy -O srec main main.srec    #将文件转换成S-record格式
  • objcopy -O binary main main.bin    #将文件转换成rawbinary 格式
  • objcopy -S main main.stripall    #生成一个不含重定位信息与标号信息的目标文件
  • objcopy -R .comment main main.remove    #去掉名为.comment的段
  • objcopy --add-section mysection=hello_text main main.add      #添加一个自定义的节到可执行文件并将一个文件内容添加到其中
  • objcopy -j mysection main.add section_hello     #将指定的段拷贝出来
  • objcopy --only-keep-debug main.debug main.debuginfo     # 生成调试信息文件
  • objcopy --strip-debug main.debug main.stripdebug    #生成不含调试信息的可执行文件
  • objcopy --add-gnu-debuglink=main.debuginfo main.stripdebug     #为不含调试信息的可执行文件添加调试信息

相关文章:

binutils工具集——objcopy的用法

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、工具简介 objcopy主要用来转换目标文件的格式。 在实际开发中,我们会用该工具进行格式转换与内容删除。 (1)在链接完成后,将elf格式的.out文件转化为bi…...

Windows使用Stable Diffusion时遇到的各种问题和知识点整理(更新中...)

Stable Diffusion安装完成后,在使用过程中会出现卡死、文件不存在等问题,在本文中将把遇到的问题陆续记录下来,有兴趣的朋友可以参考。 如果要了解如何安装sd,则参考本文《Windows安装Stable Diffusion WebUI及问题解决记录》。如…...

MySQL workbench基本查询语句

1.查询所有字段所有记录 SELECT * FROM world.city; select 表示查询;“*” 称为通配符,也称为“标配符”。表示将表中所有的字段都查询出来;from 表示从哪里查询;world.city 表示名为world的数据库中的city表; 上面…...

软件测试详解

文章目录一、软件危机(一)概念(二)产生软件危机的原因(三)消除软件危机的途径二、软件过程模型(一)软件生命周期概念(二)软件开发模型1. 瀑布模型2. 螺旋模型…...

YOLOS学习记录

在前面,博主已经完成了YOLOS项目的部署与调试任务,并在博主自己构造的数据集上进行了实验,实验结果表明效果并不显著,其实这一点并不意外,反而是在情理之中。众所周知,Transformer一直以来作为NLP领域的带头…...

数组边遍历(for循环)边删除为什么删不干净 及三种实现删除的方法

文章目录1、为什么删不干净倒序删迭代器lambda表达式删除为什么说数组边for循环遍历边删除会出现删不干净的情况1、为什么删不干净 先写一个例子:可以先猜一下控制台会打印出什么内容? public class removeIterator {public static void main(String[]…...

环境配置之Keepass

前言很久以前,就有了想要一个自己密码管理器的念头。毕竟,即使浏览器能记住各个网站的账号密码,但是在登录单独客户端的时候,仍然要翻找密码。为了省事,也曾经是一个密码走天下。然后被劫持了QQ给同学发黄色小网站&…...

Java 电话号码的组合

电话号码的字母组合中等给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits "23…...

MATLAB——将直接型转化为并联型和级联型

题目1(IIR): 已知一个系统的传递函数为: H(z)8−4z−111z−2−2z−31−1.25z−10.75z−2−0.125z−3H(z)\frac{8-4z^{-1}11z^{-2}-2z^{-3}}{1-1.25z^{-1}0.75z^{-2}-0.125z^{-3}}H(z&#xff09…...

.NET Framework .NET Core与 .NET 的区别

我们在创建C#程序时,经常会看到目标框架以下的选项,那么究竟有什么区别? 首先 .NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体…...

carla与ros2的自动驾驶算法-planning与control算法开发与仿真

欢迎仪式 carla与ros2的自动驾驶算法-planning与control算法开发与仿真欢迎大家来到自动驾驶Player(L5Player)的自动驾驶算法与仿真空间,在这个空间我们将一起完成这些事情: 控制算法构建基础模块并仿真调试:PID、LQR、Stanley 、MPC、滑膜控…...

corn表达式

简单理解corn表达式:在使用定时调度任务的时候,我们最常用的,就是cron表达式了。通过cron表达式来指定任务在某个时间点或者周期性的执行。cron表达式配置起来简洁方便,无论是Spring的Scheduled还是用Quartz框架,都支持…...

推荐系统中对抗性机器学习-文献综述与未来发展整理分享

对抗学习是一种机器学习技术,旨在通过提供欺骗性输入来欺骗模型。最常见的原因是导致机器学习模型出现故障。大多数机器学习技术旨在处理特定的问题集,其中从相同的统计分布(IID)生成训练和测试数据。当这些模型应用于现实世界时&…...

Proteus8.15安装教程

1、解压Proteus8.15 安装包,然后双击进去,找到setup文件,右键,以管理员身份运行。 2、需要安装一些插件,点击“next”。把插件安装完成。 点击“finfish” 点击“install” 点击“Cancel” 3、如果没有上面步骤&…...

Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符关系运算符布尔运算符字符串运算符文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。…...

Linux基础命令-sed流编辑器

Linux三剑客-grep命令 Sed 一. 命令介绍 先到帮助文档中查看命令的描述信息 NAME sed - stream editor for filtering and transforming text sed命令是操作、过滤和转换文本内容的强大工具,常用功能包括结合正则表达式对文件实现快速增删改查,其中查询…...

C语言笔试题(1)

#include <stdio.h> #include <stdlib.h> #include <string.h> void getmemory(char *p) { p(char *) malloc(100); strcpy(p,“hello world”); } int main(void) { char *strNULL; getmemory(str); printf(“%s/n”,str); free(str); return 0; } 上述程序…...

网络连接的三种模式

文章目录前言一、三种连接模式介绍二、三种网络连接模式的区别前言 在进行虚拟机配置时&#xff0c;网络连接分为三种模式&#xff1a;桥接模式&#xff0c;NAT模式&#xff0c;主机模式 一、三种连接模式介绍 张三、李四、王五在同一个网段&#xff0c;所以他们之间可以相互…...

大学模拟电路期末考试模拟题详解

&#xff08;一&#xff09;选择题 3.4.5.6.7.8.9.10. &#xff08;二&#xff09;填空题 1.漂流电流是温度电流&#xff0c;它由少数、载流子形成、其大小与温度有关&#xff0c;而与外加电压无关。 反向电流是由少数载流子形成、其大小与温度有关&#xff0c;而与外加电压无…...

C/C++内存管理讲解

c/C内存管理讲解 C/C内存分布 首先通过一些题目的引入讲解带大家走进C/C的内存分布。 eg1&#xff1a; 根据上述变量的定义&#xff0c;来判断它们所在的内存位置。 从接下来的4个选项中选出最佳答案填入&#xff08;注&#xff1a;可重复选&#xff09;。 A、栈 B、堆 C、数…...

3步实现文献影响力自动化追踪:Zotero学术插件使用指南

3步实现文献影响力自动化追踪&#xff1a;Zotero学术插件使用指南 【免费下载链接】zotero-google-scholar-citation-count Zotero plugin for fetching number of citations from Google Scholar. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-google-scholar-citat…...

用Arduino玩转GPIO中断:按键消抖+过零检测的5个实战技巧

用Arduino玩转GPIO中断&#xff1a;按键消抖过零检测的5个实战技巧 在智能家居和物联网设备开发中&#xff0c;GPIO中断的高效处理能力往往决定了整个系统的响应速度和稳定性。想象一下&#xff0c;当你按下智能开关却要等待半秒才有反应&#xff0c;或者交流电器在错误的时间点…...

别再死记硬背了!用一次完整的网页访问,帮你彻底搞懂HCIA/HCIP里的TCP/IP和OSI模型

从输入网址到页面加载&#xff1a;用真实场景拆解TCP/IP与OSI模型 想象一下这个场景&#xff1a;你在浏览器地址栏输入"www.baidu.com"&#xff0c;按下回车键&#xff0c;不到一秒就看到了熟悉的搜索页面。这看似简单的操作背后&#xff0c;隐藏着一场精密的网络协议…...

【day63】

以前有个孩子&#xff0c;他分分钟都在碎碎念。不过&#xff0c;他的念头之间是有因果关系的。他会在本子里记录每一个念头&#xff0c;并用箭头画出这个念头的来源于之前的哪一个念头。翻开这个本子&#xff0c;你一定会被互相穿梭的箭头给搅晕&#xff0c;现在他希望你用程序…...

LrcHelper:网易云音乐双语歌词下载与设备适配完整指南

LrcHelper&#xff1a;网易云音乐双语歌词下载与设备适配完整指南 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper 你是否经常遇到喜欢的歌曲没有歌词&#xff0c;或者歌词与音乐不同步的…...

N_m3u8DL-RE:现代流媒体下载的终极解决方案

N_m3u8DL-RE&#xff1a;现代流媒体下载的终极解决方案 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器&#xff0c;支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 在当今…...

实战分享:如何用OmniPeek和TL-WDN7200H网卡高效抓取WiFi空口数据包(附信道选择技巧)

实战分享&#xff1a;如何用OmniPeek和TL-WDN7200H网卡高效抓取WiFi空口数据包&#xff08;附信道选择技巧&#xff09; 在无线网络分析和安全研究领域&#xff0c;空口数据包捕获是诊断问题、优化性能和发现安全隐患的基础技能。不同于有线网络抓包&#xff0c;无线环境中的信…...

3分钟掌握终极ASCII艺术转换:免费将图片视频变成字符画的神奇工具 [特殊字符]

3分钟掌握终极ASCII艺术转换&#xff1a;免费将图片视频变成字符画的神奇工具 &#x1f3a8; 【免费下载链接】ASCII-generator ASCII generator (image to text, image to image, video to video) 项目地址: https://gitcode.com/gh_mirrors/as/ASCII-generator 想不想…...

OpenClaw多端同步:GLM-4.7-Flash任务跨设备执行方案

OpenClaw多端同步&#xff1a;GLM-4.7-Flash任务跨设备执行方案 1. 为什么需要多端同步&#xff1f; 去年冬天的一次出差经历让我深刻体会到设备割裂的痛苦。当时我正在用OpenClaw处理一个数据分析项目&#xff0c;笔记本上运行着GLM-4.7-Flash模型生成的自动化脚本。突然接到…...

MGeo地址要素解析模型惊艳效果展示:省市区街道门牌号全自动识别案例集

MGeo地址要素解析模型惊艳效果展示&#xff1a;省市区街道门牌号全自动识别案例集 1. 引言&#xff1a;当AI“读懂”你的地址 你有没有遇到过这样的场景&#xff1f;填写快递单时&#xff0c;把“XX省XX市XX区XX街道XX号”一股脑儿写进去&#xff0c;结果系统识别不出来&…...