可执行文件和dll进程
Executable file & dll process
要创建没有任何 .dll 或其他格式的单个可执行程序,我需要学习哪种软件或编程语言独立?
如有任何建议,我将不胜感激!
是operating system specific (and not defined by the language itself). Read more about linkers.
您可能想要使用 C++11(或 C++14)并指示您的 C++ 编译器静态 link 您的可执行文件。所以你应该阅读编译器的文档;使用 GCC you could pass -static
到 g++
命令。
您可能还想使用 Go language。 Go 的常用编译器试图静态生成 linked 可执行文件。
顺便说一句,静态 linked executable still have dependencies, e.g. to its operating system kernel(可能还有实用程序和一些系统文件):显然,Windows 的静态 linked 可执行文件不会运行 于 Linux。
(例如,在 Linux 上,任何使用标准 system(3) 函数的程序 silently 取决于 /bin/sh
....)
在实践中,我一般不会推荐静态 linking C standard library,而是 YMMV。
当然需要一些source code editor to write your code (I prefer GNU emacs). Some people are using IDEs, but I prefer to run explicitly the compilation command (perhaps using some build automation tool like GNU make
).
(注意 DevC++ 或 CodeBlocks 是 IDE,而不是 compiler)
注意:我建议阅读 Operating Systems : Three Easy Pieces (freely downloadable,每章都有自己的 PDF 文件)以了解有关操作系统的更多信息。
真正独立的 "executable" 是闪存到嵌入式设备上的图像。您的图像可能(但不需要)捆绑一个库,例如 FreeRTOS,它的功能类似于一种 mini-OS。除了实际硬件,您的程序将完全自给自足。
否则,您 至少 有一个操作系统,可以访问您的语言的 "runtime" 支持库(尽管这通常是静态链接)和可能的第三方库(通常也可能是静态链接的)。
有时,当您尝试自包含时,您会在另一个方向上走得太远,以至于实际上您的 "program" 根本不可执行,而只是一个要通过 Python 传递的脚本或 Go 或 JavaScript 或 VBScript 解释器。这实际上与自包含相反,但如果在所有目标平台上都存在该语言的实现,它会很好且可移植。
在 VM(Java、.NET)上运行的代码是两者之间的一种折衷。
Visual Studio:
Project->'project' Properties
Configuration Properties -> C++ -> Code Generation
Runtime Library
-> 多线程[调试]
不要使用多线程[调试] DLL
此外,为调试版本设置 [debug],而不为发布版本设置 [debug]。您可以使用左上角的 'Configuration' 下拉菜单在构建类型之间切换。
要创建没有任何 .dll 或其他格式的单个可执行程序,我需要学习哪种软件或编程语言独立?
如有任何建议,我将不胜感激!
是operating system specific (and not defined by the language itself). Read more about linkers.
您可能想要使用 C++11(或 C++14)并指示您的 C++ 编译器静态 link 您的可执行文件。所以你应该阅读编译器的文档;使用 GCC you could pass -static
到 g++
命令。
您可能还想使用 Go language。 Go 的常用编译器试图静态生成 linked 可执行文件。
顺便说一句,静态 linked executable still have dependencies, e.g. to its operating system kernel(可能还有实用程序和一些系统文件):显然,Windows 的静态 linked 可执行文件不会运行 于 Linux。
(例如,在 Linux 上,任何使用标准 system(3) 函数的程序 silently 取决于 /bin/sh
....)
在实践中,我一般不会推荐静态 linking C standard library,而是 YMMV。
当然需要一些source code editor to write your code (I prefer GNU emacs). Some people are using IDEs, but I prefer to run explicitly the compilation command (perhaps using some build automation tool like GNU make
).
(注意 DevC++ 或 CodeBlocks 是 IDE,而不是 compiler)
注意:我建议阅读 Operating Systems : Three Easy Pieces (freely downloadable,每章都有自己的 PDF 文件)以了解有关操作系统的更多信息。
真正独立的 "executable" 是闪存到嵌入式设备上的图像。您的图像可能(但不需要)捆绑一个库,例如 FreeRTOS,它的功能类似于一种 mini-OS。除了实际硬件,您的程序将完全自给自足。
否则,您 至少 有一个操作系统,可以访问您的语言的 "runtime" 支持库(尽管这通常是静态链接)和可能的第三方库(通常也可能是静态链接的)。
有时,当您尝试自包含时,您会在另一个方向上走得太远,以至于实际上您的 "program" 根本不可执行,而只是一个要通过 Python 传递的脚本或 Go 或 JavaScript 或 VBScript 解释器。这实际上与自包含相反,但如果在所有目标平台上都存在该语言的实现,它会很好且可移植。
在 VM(Java、.NET)上运行的代码是两者之间的一种折衷。
Visual Studio:
Project->'project' Properties
Configuration Properties -> C++ -> Code Generation
Runtime Library
-> 多线程[调试]
不要使用多线程[调试] DLL
此外,为调试版本设置 [debug],而不为发布版本设置 [debug]。您可以使用左上角的 'Configuration' 下拉菜单在构建类型之间切换。