是否可以在OS X上静态链接一个Haskell应用程序?

问题描述:

我很不熟悉任何语言的静态链接,但我试图静态链接一个Haskell程序在其他mac上使用。我已经成功地静态地在Linux上的链接并确认其在其他Linux系统通过使用这些选项可以工作:-O2 -static -optl-static -optl-pthread是否可以在OS X上静态链接一个Haskell应用程序?

当我尝试使用在OS X上的选项,我得到以下错误:

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

任何想法是什么?我在做什么完全坚果?

+3

有什么特定的东西让你认为你需要静态链接,只是为了在不同的计算机上运行你的可执行文件?通常,OS X可执行文件动态链接到系统提供的库;静态链接远不如Linux。你可以在你的可执行文件上运行'otool -Lv'来查看它动态加载的库。如果它们都在'/ usr/lib'或'/ System/Frameworks'中,并且它们不是你安装的东西,那么你可能已经OK了。 – 2013-02-24 07:25:35

+0

我不知道。看起来它所链接的所有库都位于/ usr/lib中。优秀。我想我应该保持这个状态,因为它可能仍然是一个有效的问题,但我会更新这个问题。 – Rayne 2013-02-24 07:32:48

+3

我应该说“它从未做过”,而不是“不那么常​​见”。 [更多背景在这个答案](http://*.com/questions/844819/how-to-static-link-on-os-x)和[Apple QA 1118](https://developer.apple。 COM /库/ MAC /#QA/qa2001/qa1118.html)。 – 2013-02-24 07:45:55

社区维基答案为后代,从注释导出:

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

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