-2

我必须学习什么样的软件或编程语言来独立创建没有任何 .dll 或其他格式的单个可执行程序?

任何建议我都会很感激!

4

3 回答 3

3

它是特定于操作系统的(而不是由语言本身定义的)。阅读有关链接器的更多信息。

您可能想要使用 C++11(或 C++14)并指示您的 C++ 编译器静态链接您的可执行文件。因此,您应该阅读编译器的文档;使用GCC,您可以传递-staticg++命令。

您可能还想使用Go 语言。Go 的常用编译器试图生成静态链接的可执行文件。

顺便说一句,静态链接的可执行文件仍然有依赖关系,例如它的操作系统内核(可能还有实用程序和一些系统文件):显然,Windows 的静态链接可执行文件不会在 Linux 上运行。

(例如,在 Linux 上,任何使用标准system(3)函数的程序都默默地依赖于/bin/sh....)

在实践中,我一般不建议静态链接C 标准库,而是 YMMV。

当然,您需要一些源代码编辑器来编写代码(我更喜欢GNU emacs)。有些人正在使用IDE,但我更喜欢显式运行编译命令(可能使用一些构建自动化工具,如GNUmake)。

(请注意 DevC++ 或 CodeBlocks 是 IDE,而不是编译器

注意:我推荐阅读操作系统:三个简单的部分(可免费下载,每章都有自己的 PDF 文件)以了解更多关于操作系统的信息。

于 2017-05-12T12:02:50.957 回答
1

真正独立的“可执行文件”是您闪存到嵌入式设备上的图像。您的图像可以(但不需要)捆绑一个库,例如作为一种迷你操作系统的 FreeRTOS。除了实际的硬件,您的程序将完全自给自足。

否则,您至少有幸拥有一个操作系统,可以访问您的语言的“运行时”支持库(尽管这通常可以静态链接)和可能的第三方库(通常可能是也静态链接)。

有时,当您尝试自包含时,您会朝着另一个方向走得太远,以至于实际上您的“程序”根本无法执行,而只是要通过 Python 或 Go 或 JavaScript 或 VBScript 解释器传递的脚本。这实际上与自包含相反,尽管如果该语言的实现存在于所有目标平台上,它是很好且可移植的。

在 VM(Java、.NET)上运行的代码是介于两者之间的一种中途之家。

于 2017-05-12T12:08:36.267 回答
1

视觉工作室:

Project->'project' Properties

Configuration Properties -> C++ -> Code Generation

Runtime Library->多线程[调试]

不要使用多线程 [debug] DLL

此外,为 Debug 构建设置 [debug] 而不是为 Release 构建设置 [debug]。您可以使用左上角的“配置”下拉菜单在构建类型之间切换。

于 2017-05-12T12:20:35.990 回答