如何检查文件是否是DLL?

时间:2009-11-25 18:23:40

标签: c++ linux dll macos file-type

给定一个文件,我想检查这是一个DLL,还是共享对象(Linux)或dylib(Mac OS X),或者是不同的东西。我的主要兴趣是在Linux和Mac OS X上区分可执行文件和DLL。对于Windows,扩展应该足以解决我的问题。

我已经检查过神奇数字技术对Linux不起作用,因为可执行文件和共享对象都具有相同的编号。

3 个答案:

答案 0 :(得分:8)

Unix(Linux和Mac OS X)命令file知道如何识别文件类型。

man file告诉您用于执行此操作的“神奇”信息,特别是在找到包含该信息的文件的位置。

man 5 magic详细描述了该文件,并且还应该告诉您它的位置。你可以看看那里,从中拉出你需要的任何东西。和/或仅来自file来源的婴儿床代码。

更新:
请注意,在Linux上,文件可以同时 可执行文件和共享库 一个例子是/lib/libc.so.6(可以执行的共享库) 另一个示例:使用-pie标志构建的任何可执行文件都可以用作共享库。有关详细信息,请参阅this答案。

答案 1 :(得分:1)

使用file工具(适用于Linux和Mac OS)。

答案 2 :(得分:0)

编写一个程序,尝试加载DLL - 如果成功,那就是一个:)

编辑:好的,这可能也是可执行文件的成功: - /