我已经阅读了这两个 SO 问题:要发布哪些运行时库?和GCC 中包含的运行时库的许可证?- 两者都非常有帮助,但不是我想要的。
我一直只是编写在自己的机器上使用的程序,这从来没有给我带来任何问题,但是现在我想开始在其他机器上运行软件并且我对运行时要求很谨慎。
编辑:请参见下面的示例,这具有误导性。
具体来说,如果我在 Windows 机器上编写 C++ 程序,通过 MinGW 使用 gcc 编译,并希望在另一台机器上运行它:
我必须将 libstdc++.dll 与我的程序一起发送吗?这个单个文件(我假设放在可执行文件的目录中)是否足以让程序运行?
还有一个相同的例子,只不过这次是一个 Objective-C 程序。将 libobjc.dll 文件发送到另一台机器是否足以让程序正常执行?
我习惯于在安装了开发人员工具等的机器上运行程序,但现在我希望在通用机器(朋友、同事等)上运行它们,我不太确定该怎么做!
编辑:回应edifice的回答,我觉得我应该澄清我在寻找什么。我知道如何识别我的程序使用的必要 DLL(/dylibs 等)(尽管我习惯于手动完成这项工作;我没有听说过任何工具)。我的问题更多的是“我现在该怎么办?”
可能需要一个更一般的例子:
假设我编写了一个程序,该程序具有从 C++、C 和/或 Objective-C(2) 代码派生的目标文件。我使用了一些使用 MinGW 的 gcc 成功编译的 Windows API 代码。我还有一个在 Visual Studio (C++) 中编写的自定义 DLL。
我已经确定了我的程序将在运行时使用哪个 DLL(其中一个可能是 GCC 的 libobjc.dll,我不确定这是否会/应该在 Windows 机器上有所作为,但我想让它尽可能通用) - “必备 DLL ”。
我想在我同事的计算机上运行它,其中大多数运行 Windows 7,但现在有些运行 Windows 8。为了完整起见,从一开始就开始:
- 我需要将必备的 DLL传输到我同事的计算机吗?
- 我应该将它们放在什么目录中?(exe目录/系统目录?)
- 一旦到位,这些 DLL 的存在是否允许程序正确执行?(假设它知道在哪里可以找到它们)
- 是否有任何其他文件应与 DLL 一起传输?
基本上,我试图根据系统运行时要求确定在另一台机器上开发和运行应用程序的整个思考过程。