C 如何在AIX下查看可执行内容

C 如何在AIX下查看可执行内容,c,executable,aix,objdump,nm,C,Executable,Aix,Objdump,Nm,我有一个关于可执行文件和C的问题 如果您必须知道可执行文件的内容(在注释中编写的每个.c文件的版本),但您只有可执行文件,那么您就没有源代码。你如何进行 我见过“nm”命令,用“cut”剪切我想要的东西,我可以在.c文件中输出,但是我不能读取里面的版本,因为我没有源文件。 我也看到了“objdump”命令,但我不能在AIX下尝试它(当然…),有等效的吗?使用objdump可以知道我想要什么吗 感谢您的帮助和关注:)您无法从已编译的可执行文件中获取源代码。不过,你可以从中获得各种各样的信息。例如,

我有一个关于可执行文件和C的问题

如果您必须知道可执行文件的内容(在注释中编写的每个.c文件的版本),但您只有可执行文件,那么您就没有源代码。你如何进行

我见过“nm”命令,用“cut”剪切我想要的东西,我可以在.c文件中输出,但是我不能读取里面的版本,因为我没有源文件。 我也看到了“objdump”命令,但我不能在AIX下尝试它(当然…),有等效的吗?使用objdump可以知道我想要什么吗


感谢您的帮助和关注:)

您无法从已编译的可执行文件中获取源代码。不过,你可以从中获得各种各样的信息。例如,您可以获取
数据
bss
文本
部分的大小(通过
大小
)命令。您还可以安装Linux utils for AIX,这将为您提供更多工具,帮助您了解可执行文件(请参阅)。最近的AIX二进制文件的格式是XCOFF64或XCOFF32(这两种文件在wikipedia上都有很好的文章)。

听起来像是在描述what(1)和ident(1)命令,用于查找嵌入在可执行文件中的字符串形式的文件版本


那些包含
@(#)
$Id
的字符串是由旧版本控制系统SCCS和RCS插入到源代码文件中的。

我找到了一种方法来做我想做的事。使用它在编译时编写的“#pragma comment(user,“comment”)”行(我不知道这一行),并将此“comment”链接到二进制文件的末尾,因此我在每个.c文件中都包含这一行。通过对可执行文件的解析,我能够仅使用二进制文件恢复每个文件的版本


再次感谢您的帮助和您的时间:)。

您所说的“a.c”文件的版本是什么意思?使用SVN当我编译完可执行文件的版本后,我想恢复链接到可执行文件中的.c文件的版本。编译器和链接器都不知道或关心SVN版本(RCS/CVS也是如此),我知道,但是我想说的是,文件的版本号(它链接到SVN)将写入.c文件中。您可能会明白我现在的意思^^^使用$version变量的内容定义一个char数组配置控制系统(如SVN)仍将原始源代码作为特定版本提供。如果该版本在对象/可执行文件中可用,则很容易转到SVN并请求该特定版本。(希望您不会忘记在文件中更新此“注释”。我知道我会的。)您可以使用
字符串my_exe_file
Walter A解析可执行文件,我试过了,但是包含注释的最后一行没有被识别为“字符串”,并且它不起作用,我已经试过了^^^然后我在开头和结尾放上符号,我cat-v,tr符号为“\n”,grep模式为“VERSION\u OF”(注释中总是写着)的行。我就是这样做的。