The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"LD_LIBRARY_PATH? ld.so.conf? help!!! Помираю!!!"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"LD_LIBRARY_PATH? ld.so.conf? help!!! Помираю!!!"
Сообщение от PLC_Ares emailИскать по авторуВ закладки on 29-Июл-02, 18:56  (MSK)
Привет всем!
Все началось с того, что я установил наконец Kylix2 и написал на нем первую графичемкую программульку, но запустить мне ее не удалось (можно было только непосредственно из среды программирования...), потому что требовались какие -то библиотеки (точно не помню что, но это и неважно)... ладно, ничего страшного - скачал арзивчик с этими библиотеками и записал их в /lib
Попоробовал запустить еще раз - и получил слудующее:

Runtime error 230 at 0805E01D
Segmentation fault

И так для любой проги, написанной в Kylix...
ЛАдно, поспрашивал, посмотрел на форумах и мне посоветовали добавить диры /usr/local/kylix2/bin, /usr/local/kylix2/lib и переменную LD_LIBRARY_PATH,что я и сделал:

#/root/.bashrc, а также пробовал и в /etc/profile

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/kylix2/bin:/usr/local/kylix2/lib"

после этого как ни странно проги стали работать, но произошло следующее:
теперь например opera не видела своих библиотек, то есть получилось так, что переменная LD_LIBRARY_PATH теперь содержала только эти две диры (или что-то еще (хз), ведь иксы-то запускались (???))..
Но ведь я добавил $LD_LIBRARY_PATH (!?) хммм...
попробовал посмотреть,что содержится там:
cat $LD_LIBRARY_PATH
действительно там были только две папки для кайликса...
ладно, что дальше?
попоровал переписать .bashrc (и /etc/profile тоже пробовал) так:
(перед этим я заглянул в /etc/ld.so.conf, чтобы пути посмотреть)

export LD_LIBRARY_PATH="/usr/kerberos/lib:/usr/X11R6/lib:/usr/lib/qt-3.0.3/lib:/usr/lib/qt2/lib:/usr/lib/sane:/usr/lib/qt-1.45/lib:/usr/local/kylix2/bin:/usr/local/kylix2/lib"

иксы опять же запускались после логфута, но не работали теперь проги Кайликса (????????), а опера зато работала ( ну просто бред какой-то!!!), хотя я же в конец добавил кайликсовые диры!

попробовал удалить /etc/ld.so.conf и /etc/ld.so.cache ( и не сохранил их притом :((( ), перезагрузился и получил по башке:

#cat /var/log/messages

Июл 29 18:13:07 localhost lpd: /usr/sbin/lpd: error while loading shared librari
es: libkrb5.so.3: cannot open shared object file: No such file or directory
Июл 29 18:13:07 localhost lpd: запуск lpd failed
Июл 29 18:13:07 localhost sendmail: запуск sendmail succeeded
Июл 29 18:13:07 localhost gpm: запуск gpm succeeded
Июл 29 18:13:08 localhost crond: запуск crond succeeded
Июл 29 18:13:09 localhost xfs: xfs: error while loading shared libraries: libXfo
nt.so.1: cannot open shared object file: No such file or directory
Июл 29 18:13:09 localhost xfs: запуск xfs failed

...

Мда, подумал я, прилетели...
но иксы также запустились - ошибки эти при загрузке остаются и проги кайликса не работают!!!

Я просто не пониааю, как еще можно отконфирурировать LD_LIBRARY_PATH!!!
Помогите пожалуйста!

P.S. : зачем нужен /etc/ld.so.conf и /etc/ld.so.cache? очень плохо то,что я их удалил? я думаю,что эта какая-то альтернатива LD_LIBRARY_PATH, но как ее использовать не понял (добавлял пути кайликса еще перед удалением туда и все равно ничего не работало!)

ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: LD_LIBRARY_PATH? ld.so.conf? help!!! Помираю!!!"
Сообщение от lavr emailИскать по авторуВ закладки on 29-Июл-02, 19:16  (MSK)
>Привет всем!
>Все началось с того, что я установил наконец Kylix2 и написал на
>нем первую графичемкую программульку, но запустить мне ее не удалось (можно
>было только непосредственно из среды программирования...), потому что требовались какие -то
>библиотеки (точно не помню что, но это и неважно)... ладно, ничего
>страшного - скачал арзивчик с этими библиотеками и записал их в
>/lib
>Попоробовал запустить еще раз - и получил слудующее:
>
>Runtime error 230 at 0805E01D
>Segmentation fault
>
>И так для любой проги, написанной в Kylix...
>ЛАдно, поспрашивал, посмотрел на форумах и мне посоветовали добавить диры /usr/local/kylix2/bin, /usr/local/kylix2/lib
>и переменную LD_LIBRARY_PATH,что я и сделал:
>
>#/root/.bashrc, а также пробовал и в /etc/profile
>
>export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/kylix2/bin:/usr/local/kylix2/lib"
>
>после этого как ни странно проги стали работать, но произошло следующее:
>теперь например opera не видела своих библиотек, то есть получилось так, что
>переменная LD_LIBRARY_PATH теперь содержала только эти две диры (или что-то еще
>(хз), ведь иксы-то запускались (???))..
>Но ведь я добавил $LD_LIBRARY_PATH (!?) хммм...
>попробовал посмотреть,что содержится там:
>cat $LD_LIBRARY_PATH
>действительно там были только две папки для кайликса...
>ладно, что дальше?
>попоровал переписать .bashrc (и /etc/profile тоже пробовал) так:
>(перед этим я заглянул в /etc/ld.so.conf, чтобы пути посмотреть)
>
>export LD_LIBRARY_PATH="/usr/kerberos/lib:/usr/X11R6/lib:/usr/lib/qt-3.0.3/lib:/usr/lib/qt2/lib:/usr/lib/sane:/usr/lib/qt-1.45/lib:/usr/local/kylix2/bin:/usr/local/kylix2/lib"
>
>иксы опять же запускались после логфута, но не работали теперь проги Кайликса
>(????????), а опера зато работала ( ну просто бред какой-то!!!), хотя
>я же в конец добавил кайликсовые диры!
>
>попробовал удалить /etc/ld.so.conf и /etc/ld.so.cache ( и не сохранил их притом :(((
>), перезагрузился и получил по башке:

маладЭц!!!

>#cat /var/log/messages
>
>Июл 29 18:13:07 localhost lpd: /usr/sbin/lpd: error while loading shared librari
>es: libkrb5.so.3: cannot open shared object file: No such file or directory
>
>Июл 29 18:13:07 localhost lpd: запуск lpd failed
>Июл 29 18:13:07 localhost sendmail: запуск sendmail succeeded
>Июл 29 18:13:07 localhost gpm: запуск gpm succeeded
>Июл 29 18:13:08 localhost crond: запуск crond succeeded
>Июл 29 18:13:09 localhost xfs: xfs: error while loading shared libraries: libXfo
>
>nt.so.1: cannot open shared object file: No such file or directory
>Июл 29 18:13:09 localhost xfs: запуск xfs failed
>
>...
>
>Мда, подумал я, прилетели...
>но иксы также запустились - ошибки эти при загрузке остаются и проги
>кайликса не работают!!!
>
>Я просто не пониааю, как еще можно отконфирурировать LD_LIBRARY_PATH!!!
>Помогите пожалуйста!

man ld пока мозги не вправятся
man ldconfig

еще есть Linux HOWTO

>P.S. : зачем нужен /etc/ld.so.conf и /etc/ld.so.cache? очень плохо то,что я их
>удалил? я думаю,что эта какая-то альтернатива LD_LIBRARY_PATH, но как ее использовать

когда чего-то не знаешь, почитай, поищи

>не понял (добавлял пути кайликса еще перед удалением туда и все
>равно ничего не работало!)
>
>ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ!

LD_LIBRARY_PATH - архаизЪма в которой перечисляются пути к динамическим и
статическим библиотекам, потому как в Unix НЕ ВСЕ библиотеки находятся
в стандартном местоположении /usr/lib

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: LD_LIBRARY_PATH? ld.so.conf? help!!! Помираю!!!"
Сообщение от PLC_Ares emailИскать по авторуВ закладки on 30-Июл-02, 01:23  (MSK)
Неужели так сложно сказать как нужно сделать? У меня ведь из-за этого система глючит, а в аглийском я не очень (понимаю конечно, но не так чтобы слишком) :((
man, man...
Блин... ну почему не сказать как сделать надо ну хотя бы в общих чертах...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: LD_LIBRARY_PATH? ld.so.conf? help!!! Помираю!!!"
Сообщение от lavr emailИскать по авторуВ закладки on 30-Июл-02, 14:04  (MSK)
>Неужели так сложно сказать как нужно сделать? У меня ведь из-за этого
>система глючит, а в аглийском я не очень (понимаю конечно, но
>не так чтобы слишком) :((
>man, man...
>Блин... ну почему не сказать как сделать надо ну хотя бы в
>общих чертах...

неужели так сложно перечитать и пересказать Кернигана и Ричи и вдобавок
Страуструпа в нескольких предложениях?

Компиляция состоит из нескольких этапов:

1. компиляция и построение таблиц (участвуют препроцессор, компилятор...)
2. сборка (участвуют компилятор и сборщик-линковщик)

В многозадачных системах обычно имеются директория с headers и libraries:
/usr/include и /usr/lib, если система идет с SDK, то последний установлен
с учетом сказанного

Тем не менее, существует море программного обеспечения которое системный
администратор НЕ БУДЕТ валить в системные ресурсы /usr/include и /usr/lib,
а обычно создает альтернативное дерево:

/usr/local/[etc;bin;sbin;include;lib;libexec;share;man;...]
или
/var/opt/...

достаточно один раз самостоятельно скомпилить и установить в систему
GNU чтобы прочувствовать.

Раньше линковщик был достаточно туповат и для него использовались
переменные LD_LIBRARY_PATH и LD_RUN_PATH, для поиска необходимых сборке
библиотек и динамических библиотек для запуска binaries.
Затем решили что для динамических и статических библиотек удобнее держать
кеш-таблицы создаваемые утилитой ldconfig в таких системах как Linux и
FreeBSD, в коммерческих системах: Solaris, HP-UX... в последних версиях
появились альтернативные утилиты с другим названием.
Соответственно при загрузке в зависимости от заданных директорий - где
просматривать нужные библиотеки и строится требуемая таблица которую
использует линковщик ld и набор софта для автоконфигурации проектов:
GNU-Style configure.

Исходя из этого и совет был совершенно конкретный - читать
man ldconfig
man ld
man cc[gcc]

пример (FreeBSD), посмотреть количество библиотек в таблице:

[alone]~ > ldconfig -r | wc -l
     356
[alone]~ >

как пример где эти библиотеки находятся:

[alone]~ > ldconfig -r | less
/var/run/ld-elf.so.hints:
        search directories: /usr/lib:/usr/lib/compat:/usr/X11R6/lib:/usr/local/l
ib:/usr/local/lib/mysql:/usr/local/lib/python1.5/site-packages
        0:-lcom_err.2 => /usr/lib/libcom_err.so.2
        1:-lscrypt.2 => /usr/lib/libscrypt.so.2
        2:-lcrypt.2 => /usr/lib/libcrypt.so.2
        3:-lm.2 => /usr/lib/libm.so.2
...
<skipped>
...
выше есть строка какие директории просматриваются для построения таблицы

теперь, если я буду собирать С/C++ программы или проект, мне достаточно
будет указывать лишь пути к headers и к нестандартным библиотекам которых
нет в таблице ИЛИ добавить их в таблицу при помощи ldconfig

например надо собрать test.c

gcc -o test -I/path/include -L/path/searchlibs -llibname ... test.c

так понятно?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: LD_LIBRARY_PATH? ld.so.conf? help!!! Помираю!!!"
Сообщение от Аноним emailИскать по авторуВ закладки on 30-Июл-02, 14:42  (MSK)
1. Пока еще что-то работает, пропишите в ld.so.conf строки
/lib
/usr/lib
/usr/local/lib (не обязательно, но часто полезно)
/usr/X11/lib (обычно здесь, где у Вас, не знаю)
и перезагрузитесь. Для страховки можно сначала сказать (из-под root)
/sbin/ldconfig
(это построит ld.so.cache). Но потом,  все же, перезагрузитесь.

2. Зачем они -- чтобы загрузчик знал где искать библиотеки. Принципиально
важен ld.so.conf, а ld.so.cache -- как и всякий кеш -- для скорости.

3. Зачем LD_LIBRARY_PATH -- объезжать ( ? override) установки из
ld.so.*. Пробовать новые библиотеки. Per-user paranoia. И т.д.

4. Почему оно не работало -- скорее всего, очепятка случилась.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру