изменение поисковых каталогов для $ sudo gcc

В OS X я пытаюсь установить необходимое условие zlib для Haskell Cabal. Я получаю эту ошибку:

$ 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
$ 

Как указать версии gcc для sudo искать библиотеки в /sw/lib? Добавлять ли переменную среды в корневой .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

... и это установило все, как ожидалось.


person Eric Wright    schedule 04.04.2009    source источник


Ответы (3)


Почему вы используете sudo когда-либо? Вы не должны компилировать как суперпользователь. Скомпилируйте как обычный пользователь и установите как суперпользователь.

person Hynek -Pichi- Vychodil    schedule 05.04.2009

Попробуйте установить LDFLAGS=-L/sw/lib.

person Sophie Alpert    schedule 04.04.2009
comment
Установить его где конкретно? Я попытался поместить его в ранее несуществующий файл ~/.bash_profile для пользователя root, а также добавить его в свой собственный ~/.bash_profile. Ни то, ни другое не имеет значения. - person Eric Wright; 05.04.2009

GHC теперь поставляется с установщиком для OS X (Leopard, не уверен насчет Tiger). Единственная проблема заключается в том, что если вы используете macports или fink, они, вероятно, не увидят, что у вас установлен GHC, и попытаются установить свою собственную версию.

person nominolo    schedule 05.04.2009