【发布时间】: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 answer 和Apple QA 1118。
-
我明白了。我不确定如何处理这个问题。您的 cmets 似乎是一个可以接受的答案。如果您想将其合并为一个,我会接受它(因为它确实回答了我的问题)。
-
@KurtRevis 我同意你的 cmets 是这个问题的正确答案。
标签: haskell