Chinaunix

标题: 用了strip,为什么readelf还可以读出函数名? [打印本页]

作者: wooin    时间: 2011-09-07 17:47
标题: 用了strip,为什么readelf还可以读出函数名?
我用C++写的程序编译成可执行文件后,用strip命令删除其中的符号信息,但是为什么我用readelf命令还是可以读出可执行文件中的函数名称呢?
有什么命令可以完全删除这些函数名?strip不给力呀。
作者: captivated    时间: 2011-09-07 18:45
回复 1# wooin


    同求解释
作者: MMMIX    时间: 2011-09-07 20:10
我用C++写的程序编译成可执行文件后,用strip命令删除其中的符号信息,但是为什么我用readelf命令还是可以读 ...
wooin 发表于 2011-09-07 17:47



    strip 去掉的是調試信息,程序加載要用的符號是不應該被去掉的。當然如果你堅持,strip 的 -R 可以幫你把任何 section 去掉,只是這麼做了以後,你的程序一般就無法執行了。
作者: wooin    时间: 2011-09-07 22:35
strip 去掉的是調試信息,程序加載要用的符號是不應該被去掉的。當然如果你堅持,strip 的 -R 可 ...
MMMIX 发表于 2011-09-07 20:10


那知道有什么办法可以删除函数名信息,但是程序还可以运行吗?
作者: MMMIX    时间: 2011-09-07 22:50
本帖最后由 MMMIX 于 2011-09-07 22:52 编辑
那知道有什么办法可以删除函数名信息,但是程序还可以运行吗?
wooin 发表于 2011-09-07 22:35



    靜態鏈接。不過靜態鏈接的程序比起動態鏈接的要大好多,極端的情況下能達到 50 倍左右。另,你為什麼會有這麼奇怪的需求?
作者: prc    时间: 2011-09-08 10:51
回复 4# wooin


    strip --strip-unneeded
作者: file3    时间: 2011-09-08 16:36
本帖最后由 file3 于 2011-09-08 16:40 编辑

我記著可以使用gcc的編譯优化参数-O2

strip -s 更徹底,刪除整個符號表




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2