什么决定了OS X上GHC的链接行为?

 用户k3fe6y3kps 发布于 2022-12-07 15:36

我在编译二进制文件时观察两台机器之间的不同链接行为.

每个都有相同的GHC(7.8.3),相同的代码,相同的标志(-Wall -O2),相同的libgmp(每个都由Homebrew安装):

machine-one$ otool -L my-binary
my-binary:
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
        /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)

machine-two$ otool -L my-binary
my-binary:
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
        /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
        /usr/local/lib/libgmp.10.dylib (compatibility version 13.0.0, current version 13.0.0)

我不能为我的生活弄清楚为什么libgmp在第二台机器上动态链接.

就差异而言,我已经能够认识到:GHC已经通过第一台机器上的OS X的二进制分发版和第二台机器上的Homebrew进行了安装.对于C编译器,我们有:

machine-one$ cc --version
Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

machine-two$ cc --version
Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

什么通常决定链接行为,我如何强制执行一种链接方法?

编辑:我观察到在zlib另一台机器上发生了相同的行为,因此它不是特定于GMP的问题.

编辑:我ghc --info从每台机器中拔出,这里是机器一和机器二.这也是两者之间的差异.

编辑:我已经通过了二进制分发重新安装机器两个在GHC,果然libgmp没有,当我重新编译的二进制我的动态链接.所以这似乎与通过Homebrew安装GHC有关.

仍然对正在发生的事情非常感兴趣.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有