Автор Тема: Използване на библиотеките в /usr/local ?  (Прочетена 1159 пъти)

plamen_t

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
Въпросът ми е следният. Използвам Slackware 11. Почти всички програми, които инсталирам, ги компилирам, правя пакети за тях и след това си ги инсталирам. Почти всички програми обаче се инсталират по подразбиране в /usr/local/. Знам как мога да променя това и да се инсталират направо в /usr/ , но предпочитам да са си в /usr/local/. Само че някой път като искам да компилирам програма, която зависи от някоя  друга, която вече съм я инсталирал, и много често ми излиза съобщение, че не може да бъде намерена библиотеката, която е нужна за компилация (въпреки че тази библиотека е инсталирана). Като опция ми се предлага да добавя в LD_LIBRARY_PATH пътя до библиотеката. Само че не мога да разбера какво е това LD_LIBRARY_PATH. По-точно къде трябва да добавя този път, така че да търси и в /usr/local/ за инсталирани библиотеки.
Активен

m0rph

  • Напреднали
  • *****
  • Публикации: 271
    • Профил
Използване на библиотеките в /usr/local ?
« Отговор #1 -: Nov 11, 2006, 23:26 »
Обикновенно в такива случаи правя линк на файла в /usr/lib. Другия вариант е да редактираш пакета вместо в /usr/local/lib файловете да ходят в /usr/lib след което да го инсталираш пак. Играл съм си да сетвам LD_LIBRARY_PATH без да има някакъв ефект така, че ако някой знае някакъв друг начин да каже.

alabal

  • Напреднали
  • *****
  • Публикации: 2173
  • cat /earth/europe/bg/sofia | grep Nacamura
    • Профил
Използване на библиотеките в /usr/local ?
« Отговор #2 -: Nov 12, 2006, 11:29 »
Дргият начин, според мен е ldconfig и/или редакция на файла /etc/ld.so.conf.



Активен

It makes you awful glad that you were born a man.

nifelheim

  • Напреднали
  • *****
  • Публикации: 328
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Използване на библиотеките в /usr/local ?
« Отговор #3 -: Nov 12, 2006, 12:29 »
Значи линкерът търси shared библиотеките в зависимост от файла ld.so.config и понеже /usr/local/lib е там не би трябвало да имаш проблем. Или проблемът е някъде другаде. Например ако компилираш някоя програма и тя спре с грешка че липсва някаква библиотека, след като инсталираш необходимата библиотека е необходимо (понякога) да стартираш ldconfig, защото не всички make скриптове го изпълняват. В противен случай линкерът няма да намира библиотеката докато не рестартираш компа, или по някаква друга причина не се стартира ldconfig.
Иначе LD_LIBRARY_PATH е променлива на обкръжението и линкера я проверява и нея, ако има зададен някакъв път. Може да се установи със:
export LD_LIBRARY_PATH=/usr/local/lib/mylib
Но да се задава LD_LIBRARY_PATH=/usr/local/lib е безсмислено, линкерът и без това търси там.
Друга причина да не ти намира библиотеките е ако не става дума за shared библиотеки (*.so), а за статични (*.a). Тогава всички неща по-горе не важат. Тогава преди компилиране трябва да установиш:
LDFLAGS="$LDFLAGS -L/usr/local/lib"



Активен

Оптимистът изучава английски език. Песимистът - китайски. А реалистът - автомат Калашников.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
rc.local
Настройка на програми
temsata 19 6328 Последна публикация Feb 22, 2005, 10:26
от Soulstealer
Проблем с /rc.d/rc.local
Настройка на програми
empty 8 3479 Последна публикация May 27, 2005, 13:58
от Hapkoc
Local
Настройка на програми
HarleyBG 2 2214 Последна публикация May 28, 2005, 13:51
от CaBA
local mail
Системни настройки
FP 2 2414 Последна публикация Aug 24, 2005, 13:08
от FP
You can only select local files!
Хардуерни и софтуерни проблеми
HarleyBG 6 4045 Последна публикация Sep 22, 2005, 22:39
от HarleyBG