在我的具体情况下,我想用它来转储我的echo 。
我不想涉及任何文件…
有没有办法使objdump从标准input读取?
你可以随时做
objdump -d /dev/stdin < t2.o
要么
cat t2.o | objdump -d /dev/stdin
样品
[root @ myhost cc]#objdump -h / dev / stdin <t2.o
/ dev / stdin:文件格式elf64-x86-64
部分:Idx名称尺寸VMA LMA
File off Algn 0 .group 00000008 0000000000000000 0000000000000000 00000040 2 ** 2 CONTENTS,READONLY,EXCLUDE,GROUP,LINK_ONCE_DISCARD
你不能。 这是没有办法的,你将不得不使用临时文件。
源文件readelf.c在甚至试图打开文件之前都有这个无条件检查(至less在binutils 2.22-8中):
if (! S_ISREG (statbuf.st_mode)) { error (_("'%s' is not an ordinary file\n"), file_name); return 1; }
因此,如果文件不是常规文件(如/dev/stdin , /proc/self/fd/*等符号链接或char设备),则不起作用。
或者,您可以修改源代码并使用修改后的objdump,但这样做可以实现可移植性。