【发布时间】:2013-10-27 08:55:46
【问题描述】:
我在 asm 中有一个小的“hello world”程序。编译和链接后,我可以在最终的 elf 文件(使用文本编辑器打开)中看到我用于变量和标签的所有名称。为什么 ?变量等不应该被静态或相对地址替换吗? 如何隐藏此信息?
我在 ubuntu x86 64 上使用 nasm:nasm -f elf64 hello.asm && ld -o a hello.o
【问题讨论】:
我在 asm 中有一个小的“hello world”程序。编译和链接后,我可以在最终的 elf 文件(使用文本编辑器打开)中看到我用于变量和标签的所有名称。为什么 ?变量等不应该被静态或相对地址替换吗? 如何隐藏此信息?
我在 ubuntu x86 64 上使用 nasm:nasm -f elf64 hello.asm && ld -o a hello.o
【问题讨论】:
这是调试信息。您可以使用命令strip 将其从目标文件中删除。
【讨论】:
也可以通过调用--strip-all 标志在链接时间内完成剥离,在您的情况下:
nasm -f elf64 hello.asm && ld -o a hello.o --strip-all.
这将从输出文件中删除所有符号,如果您只想删除调试符号,您可以使用--strip-debug。
您可以在此处阅读更多选项:http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html
【讨论】: