【发布时间】:2012-12-19 22:45:12
【问题描述】:
使用 gcc -s 和 Unix strip 编译从可执行文件中删除所有符号表和重定位信息(使其更小)。
这会影响可执行文件的功能吗?某些执行地址空间布局随机化 (ASLR) 的操作系统是否需要此信息?如果不是,为什么一开始就保留它们?
略详细概述上述内容会有所帮助。
【问题讨论】:
-
我不确定任何现代
strip会删除重定位信息。你不这么认为吗? -
@NPE
gcc -s <object>和gcc <object>+strip产生了完全相同大小的可执行文件,所以我假设他们也在做同样的事情。但你是对的,它不会删除重定位信息。 -
见this question。 fPIE(和 fPIC)代码不需要对其位置进行硬编码,因此不需要任何重定位信息。
标签: linux gcc assembly executable