【发布时间】:2016-11-21 05:59:44
【问题描述】:
我有一个本地构建的 stack 项目,它将 lib_.so 复制到 El Capitan 中的共享 lib 目录。此共享对象本身链接到许多其他对象,所有这些对象都是.so 文件。我有另一个stack 项目,它引用第一个项目作为本地依赖项,并希望找到它复制到所述目录的共享库,除了堆栈在共享目录中查找lib_.dylib 而不是lib_.so。它可能无法找到该文件。
有没有办法告诉堆栈它应该使用.so 文件?如果我将根文件重命名为.dylib,堆栈可以找到它,但找不到其他链接文件,所有这些文件都应该是.dylib。
【问题讨论】:
-
来自 Stack bugtracker。 OS X 上的共享库有
.dylib扩展名,而不是.so,所以我猜没有办法做到这一点。我认为这是由 GHC 强制执行的。所以第一个问题是,你为什么要在 OS X 上安装.so文件?然后,如果.so是一个 Haskell 库,这是一个糟糕的设置,如果它是任何其他库,它只有一个不可移植的构建脚本。 -
部分撤回:stackoverflow.com/a/2339910/53974 表明
.so对于可加载模块/捆绑包很常见(但非标准),您无法链接(它们' re 应该在运行时加载)。但同样,“不可能像共享库一样链接捆绑包。”因此,如果是,那么您尝试做的事情就不应该起作用,即使这可能不是您在做的。
标签: macos haskell haskell-stack