让我描述一下我想做的事情。我想制作一个可以在 Linux 和 Windows 上运行的软件/应用程序。它可以是任何语言,例如:cpp、java、python。我需要知道制作可以在 Linux 中编译(交叉编译)为 exe 的东西的最安全方法是什么。
我知道你之前已经听过这个问题数百万次了。但我有一些建议可以从你们那里得到。
大多数人都会告诉我去喝酒。我已经尝试过了。但听说windows病毒可以通过wine感染Linux系统。所以我对此感到有点不舒服。
你能告诉我一种在 Linux 中从 Windows 制作 exe 文件的方法吗?
如果您使用 C 或 C++ 编写,则可以使用 MingW64 编译 Windows 程序。(它与 gcc 非常相似,但支持 MSVC 语法扩展并输出 .exe 文件。)人们称为 Windows 应用程序的几个项目实际上是在 Linux 上使用 MinGW64 构建的,通常使用 Qt 作为图形界面。
我认为Zig 编译器也可以做同样的事情(它接受 C)。
您可能不需要为 Java 做任何特殊的事情,因为 Java 应用程序不直接在操作系统上运行,它们在 Java 运行时 (JRE) 上运行,并且 Windows 和 Linux 都有一个 JRE - 无论是哪一个都没有关系您编译它的操作系统,无论哪种方式,.jar 都是相同的。
同样,.NET 运行时在 Linux 上可用(尽管 WinForms 不能在 Linux 上运行 - 但我见过使用 gtk-sharp 编写的程序在 Windows 上运行)。
大多数 Windows 病毒无法进入运行 Wine 的 Linux 系统:它没有任何典型的 Windows 网络服务(例如,即使您有 Samba,它也不会受到绝大多数 Windows SMB.sys 漏洞的影响,因为它是不同的程序);它没有 Windows Web 浏览器或 Windows 电子邮件应用程序;我假设您不打算双击在 USB 记忆棒中找到的任何随机 .exe。
您可以使用跨平台系统,例如 Java(已经是跨平台的)、Qt(用于 C/C++)或 Xamarin(或其他 C# 跨平台框架)。这些可以在 Linux/Windows 上为其中任何一个进行编译。您还可以在两个系统中仅使用 clang/gcc,并仅更改系统所需的变量或使用 crosspltaform 库(例如,用于 GIU 创建的 dearimgui)