【问题标题】:Linux stand alone executable generationLinux 独立可执行文件生成
【发布时间】:2009-09-13 12:15:12
【问题描述】:

我是一名程序员,在 Java、Ruby、Python 和其他高级/动态语言方面拥有深厚的背景。我面临一个问题,我需要编写一个 Linux 可执行文件(也适用于 64 位和可能的 32 位操作系统),而这些语言似乎都不适合这个任务,因为我最终也不得不分发一个运行时。

我真的无法编写像样的 C 代码,所以我想就一种支持套接字通信和进程生成的高级语言寻求建议,这种语言可以生成 C 中间代码或独立的 Linux 可执行文件。

【问题讨论】:

  • 为什么你的目标是 Linux 用户而不相信 Linux 用户能够使用 Linux?如果有人在使用 Linux,那么他们很有可能已经安装了 Java、Python 和 Ruby,或者可以轻松安装它们。
  • @Chris:这真的取决于他的应用程序的用途。如果它可能在服务器环境中使用,则很有可能上述任何一种都不可用。许多系统管理员不会在他们的服务器上安装他们绝对不需要的任何东西。这是一种智能管理方式,可以最大限度地减少安全风险。
  • Linux 的方法是创建依赖于运行时的包(.deb、.rpm),并让包管理器处理其余部分。

标签: linux programming-languages


【解决方案1】:

对于python,您可以使用Freeze

来自维基:

Freeze 是一个“纯 Python”实用程序 随 Python 一起提供。您可以使用冻结 为 Unix 编译可执行文件 系统。

如果你想写 Python,但是你 不知道你的客户有没有 Python 安装好了,就用这个吧!

【讨论】:

  • 作为记录,您应该注意,Freeze 基本上是为您的程序分发带有 Python 字节码的 Python 解释器。
【解决方案2】:

一些选择:

  1. 学习 C 或 C++。它能有多难?可能会很有趣。
  2. 使用gcj。这是 gnu java 编译器。
  3. 使用RubyScript2Exe

【讨论】:

  • 在 Chris 来到这里之前,:-) 是的,第 3 项是一个打包程序,它并没有真正编译您的 Ruby 程序。但它可能会解决问题。
【解决方案3】:

如果你愿意屈服于黑暗面,有一些 Perl 的实验性“编译器”(即翻译成 C)。我不知道你对此有何感想——很多 Python 狂热者(并非所有 Python 用户都狂热)似乎无缘无故地怀着热情憎恨它,但我想人们一定有他们的宗教观点。

就其价值而言,对于大多数“高级”语言而言,任何真正的编译器基本上都只是将您的程序与运行时捆绑在一起。如果你真的不想这样,你将不得不使用 C(甚至 C 也需要一个标准库,尽管目前还没有可用的系统没有自带)或 C++(参见上一个)。

你可以试试 Haskell,它应该直接编译成机器码,但可能没有足够成熟的库来满足你的口味,并且在你尝试学习它时可能会伤到你的大脑。或者也许是 Erlang,如果你非常需要并发,虽然我不知道它是专门的进程生成还是一般对并发的强大支持。那里还应该有各种 Lisp 方言的编译器,但我不知道该语言/库是否适合您的任务。

【讨论】:

  • FWIW,Haskell 确实将其运行时包含在已编译的可执行文件中。 GHC 6.8.2 中仅main=return() 的编译脚本会在我的计算机上生成 353107 字节的可执行文件。
  • 大多数语言都会这样做——你不得不这样做。唯一的区别是 C 标准库非常轻量级。
【解决方案4】:

您可能需要考虑 Perl,因为它现在默认安装在大多数 UNIX 系统上。恕我直言,它并不是一种高级语言,但它比编写 C 语言要容易一些。我会拿一份 Accelerated C++ 的副本并用 C++ 编写它。为这样的任务学习 C++ 可能非常值得。一旦您开始熟悉使用 Boost 和 STL 进行编程,它就会真正感觉像是一种高级语言。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多