2017-06-02 28 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

我的問題是,我被綁定到該版本。新版本在另一個功能上有不同的行爲,這會造成麻煩... –