Титла: Използване на библиотеките в /usr/local ? Публикувано от: plamen_t в Nov 11, 2006, 22:20 Въпросът ми е следният. Използвам Slackware 11. Почти всички програми, които инсталирам, ги компилирам, правя пакети за тях и след това си ги инсталирам. Почти всички програми обаче се инсталират по подразбиране в /usr/local/. Знам как мога да променя това и да се инсталират направо в /usr/ , но предпочитам да са си в /usr/local/. Само че някой път като искам да компилирам програма, която зависи от някоя друга, която вече съм я инсталирал, и много често ми излиза съобщение, че не може да бъде намерена библиотеката, която е нужна за компилация (въпреки че тази библиотека е инсталирана). Като опция ми се предлага да добавя в LD_LIBRARY_PATH пътя до библиотеката. Само че не мога да разбера какво е това LD_LIBRARY_PATH. По-точно къде трябва да добавя този път, така че да търси и в /usr/local/ за инсталирани библиотеки.
Титла: Използване на библиотеките в /usr/local ? Публикувано от: m0rph в Nov 11, 2006, 23:26 Обикновенно в такива случаи правя линк на файла в /usr/lib. Другия вариант е да редактираш пакета вместо в /usr/local/lib файловете да ходят в /usr/lib след което да го инсталираш пак. Играл съм си да сетвам LD_LIBRARY_PATH без да има някакъв ефект така, че ако някой знае някакъв друг начин да каже.
Титла: Използване на библиотеките в /usr/local ? Публикувано от: alabal в Nov 12, 2006, 11:29 Дргият начин, според мен е ldconfig и/или редакция на файла /etc/ld.so.conf.
Титла: Използване на библиотеките в /usr/local ? Публикувано от: nifelheim в 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" |