C++ a、 我们的linux可执行文件是哪个程序的?

C++ a、 我们的linux可执行文件是哪个程序的?,c++,c,executable,C++,C,Executable,给定一个包含大量文件的当前目录,假设我编译了一个文件并生成了可执行文件a.out。现在,我想找出这个可执行文件是从哪个程序生成的。 我怎么做呢?您可以使用readelf: readelf -a a.out | grep FILE 例如: $ gcc t.c $ readelf -a a.out |grep FILE 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 36: 000000000000

给定一个包含大量文件的当前目录,假设我编译了一个文件并生成了可执行文件a.out。现在,我想找出这个可执行文件是从哪个程序生成的。
我怎么做呢?

您可以使用
readelf

readelf -a a.out | grep FILE
例如:

$ gcc t.c
$ readelf -a a.out |grep FILE
    28: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
    36: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
    41: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS t.c
$ 
或者,您可以使用

objdump -t a.out |grep df
例如:

$ objdump -t a.out |grep df
0000000000000000 l    df *ABS*  0000000000000000              crtstuff.c
0000000000000000 l    df *ABS*  0000000000000000              crtstuff.c
0000000000000000 l    df *ABS*  0000000000000000              t.c

您可以使用
objdump

> objdump -g a.exe

a.exe:     file format pei-i386

crt1.c:
cygming-crtbegin.c:
file.c:
tlssup.c:
CRTglob.c:
CRTfmode.c:
txtmode.c:
CRT_fp10.c:
cpu_features.c:
...

一般来说:你不能。你说的程序是什么意思?源代码?我想他想把源代码和可执行文件链接起来。这是否需要
a.exe
在启用调试的情况下编译?(
-g
)@damienfrancois是的,
-g
的存在意味着+1。虽然,当你说:
echo“int main(){}”gcc-x c--o-| xargs readelf-a-| grep FILE
时,它(显然)不起作用。事实上,考虑到OP的问题描述,我假设可执行文件是从实际文件编译而来的。我在开玩笑,不是吗?@devnull好的,我的坏。由于没有其他的视觉线索,我误以为你很挑剔。很抱歉