是否可以在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
任何想法是什么?我在做什么完全坚果?
答
社区维基答案为后代,从注释导出:
通常OS X可执行动态对系统提供的库链接;静态链接远不如Linux。您可以在您的可执行文件上运行otool -Lv
以查看它动态加载的库。如果他们都在/usr/lib
或/System/Frameworks
而且他们不是你安装的东西,那么你可能已经OK了。
实际上,根据this answer,mac系统库的静态链接是不允许的。
有什么特定的东西让你认为你需要静态链接,只是为了在不同的计算机上运行你的可执行文件?通常,OS X可执行文件动态链接到系统提供的库;静态链接远不如Linux。你可以在你的可执行文件上运行'otool -Lv'来查看它动态加载的库。如果它们都在'/ usr/lib'或'/ System/Frameworks'中,并且它们不是你安装的东西,那么你可能已经OK了。 – 2013-02-24 07:25:35
我不知道。看起来它所链接的所有库都位于/ usr/lib中。优秀。我想我应该保持这个状态,因为它可能仍然是一个有效的问题,但我会更新这个问题。 – Rayne 2013-02-24 07:32:48
我应该说“它从未做过”,而不是“不那么常见”。 [更多背景在这个答案](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