有没有办法使objdump从标准input读取而不是文件?

在我的具体情况下,我想用它来转储我的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,但这样做可以实现可移植性。