在OS X上我正在尝试为haskell的Cabal安装zlib先决条件。我收到这个错误:
$ sudo ./Setup build
Preprocessing library zlib-0.5.0.0…
ld: library not found for -lgmp
collect2: ld returned 1 exit status
linking dist/build/Codec/Compression/Zlib/Stream_hsc_make.o failed
command was: /usr/bin/gcc -lz -L/sw/lib/ghc-6.8.3/lib/bytestring-0.9.0.1.1 -L/sw/lib/ghc-6.8.3/lib/array-0.1.0.0 -L/sw/lib/ghc-6.8.3/lib/base-3.0.2.0 -L/sw/lib/ghc-6.8.3 -lm -lgmp -ldl dist/build/Codec/Compression/Zlib/Stream_hsc_make.o -o dist/build/Codec/Compression/Zlib/Stream_hsc_make
库-lgmp可以在/ sw / lib中找到,所以如果我手动添加-L / sw / lib,我可以成功运行该命令(“/ usr / bin / gcc ...”)。问题是sudo不知道/ sw / lib。看哪:
$ gcc -print-search-dirs | grep sw
libraries: =/lib/i686-apple-darwin9/4.0.1/:/lib/:/usr/lib/i686-apple-darwin9/4.0.1/:/usr/lib/:./i686-apple-darwin9/4.0.1/:./:/sw/lib/i686-apple-darwin9/4.0.1/:/sw/lib/:/usr/lib/gcc/i686-apple-darwin9/4.0.1/:/usr/lib/gcc/i686-apple-darwin9/4.0.1/:/usr/lib/gcc/i686-apple-darwin9/4.0.1/../../../../i686-apple-darwin9/lib/i686-apple-darwin9/4.0.1/:/usr/lib/gcc/i686-apple-darwin9/4.0.1/../../../../i686-apple-darwin9/lib/:/usr/lib/gcc/i686-apple-darwin9/4.0.1/../../../i686-apple-darwin9/4.0.1/:/usr/lib/gcc/i686-apple-darwin9/4.0.1/../../../
$ sudo gcc -print-search-dirs | grep sw
$
如何告诉gdo的sudo版本在/ sw / lib中查找库?我是否在root的.bash_profile上添加了一个环境变量?如果是这样,哪一个?
更新 可能有更合适的方法来做到这一点,但这是有效的。我用它创建了一个bash脚本:
#!/bin/sh
export LIBRARY_PATH=/sw/lib:$LIBRARY_PATH
./Setup build
然后我跑了
$ sudo ./script.sh
编译zlib没有抱怨 - 万岁!不幸的是,cabal-install仍然给我错误:
$ ./Setup configure
Configuring cabal-install-0.6.2…
Setup: At least the following dependencies are missing:
zlib >=0.4 && <0.6
所以我回到了cabal-install目录(这是我首先要做的),然后跑了......
$ ./bootstrap.sh
...并按预期安装了所有内容。
答案 0 :(得分:1)
为什么要使用sudo
?您不应该以超级用户身份进行编译。编译为普通用户并以超级用户身份安装。
答案 1 :(得分:0)
尝试设置LDFLAGS=-L/sw/lib
。
答案 2 :(得分:0)
GHC现在附带OS X安装程序(Leopard,不确定Tiger)。唯一的问题是,如果您使用macports或fink,这些可能不会看到您安装了GHC并尝试安装它们自己的版本。