gpt4 book ai didi

programming-languages - 我如何找出特定软件是用什么编程语言编写的?

转载 作者:行者123 更新时间:2023-12-02 07:12:28 24 4
gpt4 key购买 nike

无论我使用的是免费软件倒数计时器、utorrent 客户端、视频播放器等,有没有一种简单的方法可以找出它是用什么编程语言编写的?特别是如果它是更主流的编程语言之一,例如 C、C++、Java、Perl、Basic 等。

我熟悉用于 Web 的 PHP 和 JavaScript,打开和编辑这些文件没有问题,但现在我正在寻找一种非 Web 编程语言,我想扩大我的范围技能一点。我很难找出我个人使用的各种应用程序是用什么语言编写的。我想将语言与我熟悉的真实示例进行比较。

最佳答案

检查已编译程序的共享库(Windows 中的 DLL)列表可以提供线索,因为通常每种语言都有一个特定的独特库来提供运行时环境。

例如,在我的 Linux PC 上,对可执行文件运行 ldd 命令会产生以下说明性输出:

ldd *redacted*
linux-gate.so.1 => (0x0042e000)
libxerces-c.so.28 => /usr/local/lib/libxerces-c.so.28 (0x004b0000)
*redacted*.so => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x05f28000)
libm.so.6 => /lib/libm.so.6 (0x00a61000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x05be0000)
libc.so.6 => /lib/libc.so.6 (0x00906000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00a93000)
/lib/ld-linux.so.2 (0x008e7000)

libc.so 的使用建议使用 C 或 C++。 libstdc++.so 的使用建议使用 C++。事实上,这是一个 C++ 程序。

在程序可执行文件中搜索人类可读的字符串也可以提供线索,特别是如果它存在调试信息。

例如,在同一个可执行文件上运行 strings 命令会显示(在许多其他文本中)以下字符串:

virtual std::ostream* XmlToDcs::AmsResultsHandler::createOutputFileIfPossible()
pointer != static_cast< unsigned int >(-1)
std::ofstream* XmlToDcs::IndexElementsHandler::createStatementsFile(const tm&, char, char, unsigned int)
EamResultsHandler.cpp

前三个看起来像 C++ 的片段,最后一个看起来像 C++ 源代码文件的名称。

关于programming-languages - 我如何找出特定软件是用什么编程语言编写的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com