哪些语言允许创建跨平台本机可执行文件?

时间:2010-05-01 01:39:46

标签: programming-languages executable

我很沮丧地发现Java缺乏一个可接受的解决方案来创建将通过双击运行的程序。除了.NET for Windows之外,我可以编写哪些现代和高级编程语言,可以针对各种平台进行编译,并在每个平台中作为本机/二进制运行(Windows,Linux,OSX(可选))

假设我想在python中编写代码,例如,是否有一种有凝聚力的方式可以分发我的软件,这不需要用户做任何特殊的操作来运行它?我想为计算机文盲编写和分发软件,Java在这方面已经证明是真正的痛苦。

澄清:当我说跨平台时,我的意思是我可以使用不同的编译器为每个目标系统编译我的源代码。我不需要一次编译解决方案......我只想为软件用户提供简单的体验,即使我需要编译它并为每个目标平台解决代码问题。

9 个答案:

答案 0 :(得分:6)

C是你最接近的。

提供最佳跨平台执行的语言将是那些运行本机代码的语言,如Java平台和.NET框架。您也可以使用解释语言而不是编译语言。

我一直在尝试使用Winforms进行Mono和C#。到目前为止,它已被证明是一个非常好的组合。在Windows中,可以通过直接双击可执行文件或为其创建可以双击的快捷方式来运行可执行文件。在Linux中,可执行文件可以从执行小脚本的图标运行,用户体验基本相同。

我认为您可以期待与Python类似的体验。

答案 1 :(得分:5)

Go添加到列表中。

要启用交叉编译,您必须re-compile the runtime and standard library

cd /usr/local/go/src
for os in linux windows darwin; do
  GOOS=${os} GOARCH=amd64 ./make.bash —no-clean
done

然后在编译之前指定目标操作系统:

GOO=linux go build yourprojecthere

答案 2 :(得分:3)

如果您已经习惯了Delphi,那么Lazarus可以提供类似的环境,但允许跨平台编译。不幸的是,你不能只把你的VCL组件放入其中,因为这些组件往往是Windows特定的/偏心的。一些VCL组件提供商也提供LCL版本。

答案 3 :(得分:2)

C ++

使用谷歌浏览器。它是一个新的Web浏览器,是本机多平台应用程序的一个很好的例子,它是用C ++编写的。

当然,正如你所说,他们必须“为每个目标平台制定代码问题”,但它确实有效!

答案 4 :(得分:2)

Rust应该在此列表中。

  1. https://www.rust-lang.org/en-US/
  2. 安装Rust工具链
  3. cargo new "my_first_rust_progam" --bin
  4. cd my_first_rust_progam
  5. cargo run
  6. 不是真的那样。没有针对最终用户的运行时或框架的预安装必备条件。它真的那么简单。你刚刚编写并编写了一个小小的'#hello world"源自本机二进制文件并执行它。

    https://doc.rust-lang.org/有很好的文档可以帮助您入门。今天学习Rust!

答案 5 :(得分:1)

我在Borland编译的Delphi中有很好的经验,使用Wine完全运行,默认情况下Delphi编译所有的一个exe。只是避免使用Win32-voodoo库。

交叉编译它的C \ C ++,eclipse和gcc的另一个选项,你可以通过i386编译不同的架构

答案 6 :(得分:1)

将Java程序“编译”到不同的平台是可能的,而且非常容易。您可以将它们转换为可执行的.jar文件,也可以使用JSmooth等程序。

如果您需要能够为不同的平台编译它,您可以使用像Perl这样的解释语言并将其编译为C代码。由于C可以在目标平台上轻松编译,因此用户不需要解释器。

答案 7 :(得分:0)

正如其他人所说,你最好的选择就是C,它几乎可以在任何平台上编译,因为它有效地是一个“高级汇编程序”。

那就是说,为了达到你想要的目标,托管语言将是你最好的选择。像Silverlight for Windows / OSX(以及Linux上Mono for Mono)这样的东西将是你最好的选择,此外它还将提供代码一次性部署解决方案。

Adob​​e Flash / Flex / Air将是另一种选择,它可以让你在任何地方进行编译,我知道这不是你要求的,但它是实现简单用户体验目标的结束。

答案 8 :(得分:-1)

JavaScript始终为。这是一种解释型语言,跨平台,使用解释器将源代码直接转换为机器代码。任何非计算机科学背景的用户都可以通过双击使用它,而无需任何其他配置。