В OS X я пытаюсь установить обязательное условие zlib для Cabal из haskell. Я получаю эту ошибку:
$ 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, поэтому я могу успешно запустить эту команду ("/ usr / bin / gcc ..."), если я вручную добавлю -L / sw / lib. Проблема в том, что 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
$
Как мне сказать sudo-версии gcc поискать в / sw / lib библиотеки? Добавить переменную окружения в корневой каталог .bash_profile? Если да, то какой?
UPDATE:
Возможно, есть более правильный способ сделать это, но вот что сработало. Я создал скрипт 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 (что я и пытаюсь сделать в первую очередь) и побежал ...
$ ./bootstrap.sh
... и установил все как положено.