2017-06-02 68 views
0

我使用objcopy来提取/替换某个部分是Windows系统上的ELF文件。如何避免objcopy炸毁文件?

>objcopy.exe -V 
GNU objcopy 2.17.50 20060824 
Copyright 2005 Free Software Foundation, Inc. 
This program is free software; you may redistribute it under the terms of 
the GNU General Public License. This program has absolutely no warranty. 

这工作一般。

但我的elf文件包含调试信息,我需要在传递之前删除以减小文件大小。

我发现THT选项-g--strip-debug应该做我想做的:

>"objcopy.exe" --strip-debug -I elf32-big -O elf32-big with-debug.elf without-debug.elf 

但悲惨的失败了。而不是使文件更小从〜炸毁的文件大小为20MB到3GB与失败之前:

objcopy.exe: without-debug.elf: File truncated 
objcopy.exe: without-debug.elf: No space left on device 

我怎么corectly从ELF使用objcopy命令删除调试信息?


不知道这是重要的,但objcopy把问题的一些警告,最加时赛中ELF的部分是这样的:

BFD: without-debug.elf: warning: allocated section `.sdata' not in segment 

回答

1

听起来像在binutils的一个bug。

您正在使用10年前的版本,而不是正式版本,但随机时间拍摄了快照。

我会尝试当前版本的binutils(版本2.28)第一 - 有机会无论你打的错误已经修复。如果没有,您可以在binutils bugzilla中报告。

+0

我的问题是,我被绑定到该版本。新版本在另一个功能上有不同的行为,这会造成麻烦... –