【问题标题】:Is it possible to statically link a Haskell application on OS X?是否可以在 OS X 上静态链接 Haskell 应用程序?
【发布时间】:2013-02-24 07:14:51
【问题描述】:

我对任何语言中的静态链接相当陌生,但我正在尝试静态链接 Haskell 程序以在其他 Mac 上使用。我已经设法在 Linux 上进行静态链接,并使用以下选项确认它可以在其他 Linux 机器上运行:-O2 -static -optl-static -optl-pthread

当我尝试在 OS X 上使用这些选项时,我收到以下错误:

ld: library not found for -lcrt0.o
collect2: ld returned 1 exit status

知道发生了什么吗?我在做一些完全疯狂的事情吗?

【问题讨论】:

  • 是否有一些特定的东西让您认为您需要静态链接,只是为了在另一台计算机上运行您的可执行文件?通常,OS X 可执行文件会动态链接到系统提供的库;静态链接远不如在 Linux 上常见。您可以在可执行文件上运行 otool -Lv 以查看它动态加载的库。如果它们都在 /usr/lib/System/Frameworks 中并且它们不是您安装的东西,那么您可能已经没事了。
  • 我不知道。它链接的所有库似乎都在 /usr/lib 中。优秀。我想我应该保持这个开放,因为它可能仍然是一个有效的问题,但我会更新这个问题。
  • 我应该说“它基本上从未做过”,而不是“远不常见”。 More background in this answerApple QA 1118
  • 我明白了。我不确定如何处理这个问题。您的 cmets 似乎是一个可以接受的答案。如果您想将其合并为一个,我会接受它(因为它确实回答了我的问题)。
  • @KurtRevis 我同意你的 cmets 是这个问题的正确答案。

标签: haskell


【解决方案1】:

来自 cmets 的社区 wiki 后人答案:

通常,OS X 可执行文件会动态链接到系统提供的库;静态链接远不如在 Linux 上常见。您可以在可执行文件上运行 otool -Lv 以查看它动态加载的库。如果它们都在 /usr/lib/System/Frameworks 中并且它们不是您安装的东西,那么您可能已经没事了。

事实上,根据this answer,mac系统库的静态链接是完全不允许的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多