成都市建设工程施工安监站网站,鄂州seo厂家,广州市人口,做室内设计的网站有哪些方面以下内容源于网络资源的学习与整理#xff0c;如有侵权请告知删除。 一、工具简介
objcopy主要用来转换目标文件的格式。
在实际开发中#xff0c;我们会用该工具进行格式转换与内容删除。
#xff08;1#xff09;在链接完成后#xff0c;将elf格式的.out文件转化为bi…以下内容源于网络资源的学习与整理如有侵权请告知删除。 一、工具简介
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 --targetbfdname 指明源文件的格式是bfdname同时也使用这个格式来写输出文件。bfdname是BFD库中描述的标准格式名包括binary二进制文件格式、srecS记录格式、elf32-i386等。 -I bfdname大写i --input-targetbfdname 指明源文件的格式是bfdname。明确告诉objcopy源文件的格式比“objcopy自己去分析源文件的格式”高效。 -O bfdname --output-targetbfdname 表示输出文件的格式是bfdname。 -R sectionpattern --remove-sectionsectionpattern 表示从输出文件中删除名为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 mysectionhello_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-debuglinkmain.debuginfo main.stripdebug #为不含调试信息的可执行文件添加调试信息