我必须学习什么样的软件或编程语言才能独立创建没有任何.dll或其他格式的单个可执行程序?
任何建议我将不胜感激!
它是特定于操作系统的(而不是由语言本身定义的)。阅读有关链接器的更多信息。
您可能希望使用 C++11(或 C++14)并指示 C++ 编译器静态链接可执行文件。所以你应该阅读编译器的文档;使用 GCC,您可以将-static
传递给g++
命令。
您可能还想使用 Go 语言。Go 的常用编译器是尝试生成静态链接的可执行文件。
顺便说一句,静态链接的可执行文件仍然具有依赖关系,例如对其操作系统内核(也许还有实用程序和一些系统文件):显然,Windows 的静态链接可执行文件不会在 Linux 上运行。
(例如,在 Linux 上,任何使用标准 system(3) 函数的程序都静默地依赖于/bin/sh
....)
在实践中,我通常不建议静态链接 C 标准库,而是 YMMV。
当然,你需要一些源代码编辑器来编写你的代码(我更喜欢GNU emacs)。有些人正在使用IDE,但我更喜欢显式运行编译命令(也许使用一些构建自动化工具,如GNUmake
)。
(请注意,DevC++ 或 CodeBlocks 是 IDE,而不是编译器)
注意:我建议阅读操作系统:三个简单的部分(可免费下载,每章都有自己的PDF文件)以了解有关操作系统的更多信息。
真正独立的"可执行文件"是您在嵌入式设备上闪存的图像。您的映像可能(但不需要)捆绑一个库,例如 FreeRTOS,它充当一种迷你操作系统。除了实际的硬件,您的程序将完全自给自足。
否则,您至少需要拥有一个操作系统,可以访问您的语言的"运行时"支持库(尽管这通常可以静态链接)以及可能的第三方库(通常也可能是静态链接)。
有时,当试图自包含时,你会在另一个方向上走得太远,实际上你的"程序"根本不是可执行的,而只是一个通过Python或Go或JavaScript或VBScript解释器传递的脚本。这实际上与自包含相反,尽管如果该语言的实现存在于所有目标平台上,它是很好且可移植的。
在VM(Java,.NET)上运行的代码是介于两者之间的一种中间位置。
Visual Studio:
Project->'project' Properties
Configuration Properties -> C++ -> Code Generation
Runtime Library
->多线程[调试]
不要使用多线程 [调试] DLL
此外,为调试版本设置 [debug],为发布版本设置 [调试]。 您可以使用左上角的"配置"下拉菜单在构建类型之间切换。