Конфигурация через cmake.
Модератор: Модераторы разделов
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Конфигурация через cmake.
Здравствуйте! Вот такая беда, при конкурировании через cmake и установке какой нибудь программы, Slackware не видит shared библиотеку. Например это было в OpenAL, Alut, InitNG. Из-за чего это?
-
zenwolf
- Бывший модератор
- Сообщения: 3139
- Статус: Страшный и злой
- ОС: Slackware..Salix..x86_64
Re: Конфигурация через cmake.
В каждом случае отдельно смотреть.
1) Библиотеки ложаться в /usr/locale/lib, это происходит если вы при компиляции явно не указали путь к /usr ( например --prefix=/usr). Путь к /usr/bin должен быть указан в системной переменной PATH.
2) Библиотеки действительно нет в системе. Запускаем в терминале нужную программу и смотрим чего не хватает, устанавливаем нужный пакет с необходимой библиотекой.
3) Если библиотеки легли "правильно" и есть в системе возможно не хватает линков. То есть запустить в терминале, почитать какой библиотеки
нет и сделать линк от "родной" (пример : ln -f libcxxxxx.so.0.0.0 libcxxxxx.so.0)
P.s. крайне мало информации о вашей проблеме, напишите подробней
1) Библиотеки ложаться в /usr/locale/lib, это происходит если вы при компиляции явно не указали путь к /usr ( например --prefix=/usr). Путь к /usr/bin должен быть указан в системной переменной PATH.
2) Библиотеки действительно нет в системе. Запускаем в терминале нужную программу и смотрим чего не хватает, устанавливаем нужный пакет с необходимой библиотекой.
3) Если библиотеки легли "правильно" и есть в системе возможно не хватает линков. То есть запустить в терминале, почитать какой библиотеки
нет и сделать линк от "родной" (пример : ln -f libcxxxxx.so.0.0.0 libcxxxxx.so.0)
P.s. крайне мало информации о вашей проблеме, напишите подробней
Quae videmus quo dependet vultus. (лат) - То, что мы видим, зависит от того, куда мы смотрим.
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Re: Конфигурация через cmake.
zenwolf писал(а): ↑18.04.2010 09:51В каждом случае отдельно смотреть.
1) Библиотеки ложаться в /usr/locale/lib, это происходит если вы при компиляции явно не указали путь к /usr ( например --prefix=/usr). Путь к /usr/bin должен быть указан в системной переменной PATH.
2) Библиотеки действительно нет в системе. Запускаем в терминале нужную программу и смотрим чего не хватает, устанавливаем нужный пакет с необходимой библиотекой.
3) Если библиотеки легли "правильно" и есть в системе возможно не хватает линков. То есть запустить в терминале, почитать какой библиотеки
нет и сделать линк от "родной" (пример : ln -f libcxxxxx.so.0.0.0 libcxxxxx.so.0)
P.s. крайне мало информации о вашей проблеме, напишите подробней
Это с чего мало? Больше физически нет. Все библиотеки в системе есть, если что.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Конфигурация через cmake.
телепатов здесь нет. если что...
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Re: Конфигурация через cmake.
Блин, еще раз. Если:
То не находит библиотеку. Переделаем вопрос: Какой путь установки надо указывать? И как это сделать в cmake?
Код: Выделить всё
mkdir build && cd build && cmake .. && make && make installТо не находит библиотеку. Переделаем вопрос: Какой путь установки надо указывать? И как это сделать в cmake?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Конфигурация через cmake.
простите, но на такой общий вопрос можно дать только один ответ: man cmake. там много букв про это (только что посмотрел). Но вам уже подробно ответили:
zenwolf писал(а): ↑18.04.2010 09:51В каждом случае отдельно смотреть.
1) Библиотеки ложаться в /usr/locale/lib, это происходит если вы при компиляции явно не указали путь к /usr ( например --prefix=/usr). Путь к /usr/bin должен быть указан в системной переменной PATH.
2) Библиотеки действительно нет в системе. Запускаем в терминале нужную программу и смотрим чего не хватает, устанавливаем нужный пакет с необходимой библиотекой.
3) Если библиотеки легли "правильно" и есть в системе возможно не хватает линков. То есть запустить в терминале, почитать какой библиотеки
нет и сделать линк от "родной" (пример : ln -f libcxxxxx.so.0.0.0 libcxxxxx.so.0)
P.s. крайне мало информации о вашей проблеме, напишите подробней
вопрос: какие библиотеки, и как вы их ставили?
полный список: ldconfig -p (используйте фильтр, их много!)
-
Crazy
- Сообщения: 862
- Статус: Адепт Дзен.
- ОС: Mint, Win7.
Re: Конфигурация через cmake.
попробуй прописать вручную, через
CMAKE_INCLUDE_PATH,
CMAKE_LIBRARY_PATH,
PKG_CONFIG_PATH
CMAKE_INCLUDE_PATH,
CMAKE_LIBRARY_PATH,
PKG_CONFIG_PATH
Desipere in loco
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
-
bormant
- Сообщения: 1354
Re: Конфигурация через cmake.
Почитайте на slackbuilds.org, например, http://slackbuilds.org/.../OpenAL/OpenAL.SlackBuild
И разберитесь там уже, кто и что должен видеть. Как я понял, сторонний софт должен увидеть OpenAL? Что говорит ldd на бинарник этого стороннего софта про OpenAl? Почему ldd не знает про новую библиотеку (нет в списке ldconfig -p, не запускали ldconfig после установки библиотек или ни разу ещё не перегружались (хинт: grep ldconfig /etc/rc.d/rc.M)); поставили библиотеку по пути, о котором нет упоминаний в /etc/ld.so.conf) или это софт сам что-то где-то пытается найти и загрузить?
...
cmake \
-DCMAKE_C_FLAGS="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_INSTALL_DIR=lib${LIBDIRSUFFIX}
...
И разберитесь там уже, кто и что должен видеть. Как я понял, сторонний софт должен увидеть OpenAL? Что говорит ldd на бинарник этого стороннего софта про OpenAl? Почему ldd не знает про новую библиотеку (нет в списке ldconfig -p, не запускали ldconfig после установки библиотек или ни разу ещё не перегружались (хинт: grep ldconfig /etc/rc.d/rc.M)); поставили библиотеку по пути, о котором нет упоминаний в /etc/ld.so.conf) или это софт сам что-то где-то пытается найти и загрузить?
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Конфигурация через cmake.
с какой????
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Конфигурация через cmake.
а... shared...
значит static видит? и то - радует. А shared не видит? Вы издеваетесь?
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Конфигурация через cmake.
дык понятно, что не DLL
а вот - КАКАЯ - непонятно.
-
RocksLinux
- Сообщения: 223
- ОС: Slackware
Re: Конфигурация через cmake.
Доброго времени суток!
Тема весьма странная, вернее весьма странное её развитие.
Изначально, я подумал, что у человека не получается собрать ПО, cmake не находит требуемые библиотеки. В связи с этим, человек попросил объяснить, как указать cmake, месторасположение библиотек. А оказалось, что в процессе запуска не находятся(ится) библиотеки(ка). Т.е. процесс компиляции и установки проходит успешно, а после запуска какой-то программы (чего и кого запускают, я тоже не понял), выдаётся сообщение о отсутствие (не нахождении) какой-то библиотеки. При этом, меня удивляет позиция BratSinot, он отказывается не точно показать вывод, а даже назвать библиотеку, только сокает.
Ладно, не говорит. Как я понимаю, если компиляция произошла успешно, но при запуске не находиться библиотека, то соответственно некорректно указаны «переменные». Требуется проверить месторасположение библиотеки и внести его в /etc/ld.so.conf. По идеи, вероятно, после этого всё заработает нормально. Можно запустить программу, следующим образом. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/dir/ && exec /usr/bin/program
Проверить, какие библиотеки, должны использоваться программой ldd /usr/bin/программа.
Человек написали, что требуется сделать, ответа нет.
.so — это тип библиотеки. Название библиотеки, выглядит например так, libopenal.so.0.1
Так я и не понял:
а) почему нельзя назвать библиотеку
б) выполнялись ли рекомендации, и каковы результаты
в) почему нельзя показать вывод
г) почему нельзя подробно описать весь процесс, с начала, с «выводами» и всеми подробностями.
Пример.
Я загрузил исходники такой-то программы, скомпилировал и установил так — процесс прошёл успешно, без ошибок.
Далее я запускаю то-то, получаю следующее сообщение (показать).
Тема весьма странная, вернее весьма странное её развитие.
Изначально, я подумал, что у человека не получается собрать ПО, cmake не находит требуемые библиотеки. В связи с этим, человек попросил объяснить, как указать cmake, месторасположение библиотек. А оказалось, что в процессе запуска не находятся(ится) библиотеки(ка). Т.е. процесс компиляции и установки проходит успешно, а после запуска какой-то программы (чего и кого запускают, я тоже не понял), выдаётся сообщение о отсутствие (не нахождении) какой-то библиотеки. При этом, меня удивляет позиция BratSinot, он отказывается не точно показать вывод, а даже назвать библиотеку, только сокает.
Ладно, не говорит. Как я понимаю, если компиляция произошла успешно, но при запуске не находиться библиотека, то соответственно некорректно указаны «переменные». Требуется проверить месторасположение библиотеки и внести его в /etc/ld.so.conf. По идеи, вероятно, после этого всё заработает нормально. Можно запустить программу, следующим образом. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/dir/ && exec /usr/bin/program
Проверить, какие библиотеки, должны использоваться программой ldd /usr/bin/программа.
Человек написали, что требуется сделать, ответа нет.
.so — это тип библиотеки. Название библиотеки, выглядит например так, libopenal.so.0.1
Так я и не понял:
а) почему нельзя назвать библиотеку
б) выполнялись ли рекомендации, и каковы результаты
в) почему нельзя показать вывод
г) почему нельзя подробно описать весь процесс, с начала, с «выводами» и всеми подробностями.
Пример.
Я загрузил исходники такой-то программы, скомпилировал и установил так — процесс прошёл успешно, без ошибок.
Далее я запускаю то-то, получаю следующее сообщение (показать).
«Знать, что мы знаем то, что мы знаем, и что мы не знаем того, чего мы не знаем — это и есть истинное знание». //Конфуций\\
120 минут классики рока
120 минут классики рока
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Re: Конфигурация через cmake.
Короче ничего из выше предложеного не работает. Сейчас emerald скомпилировал та-же песня:
Так-что это не из-за конфигурации через Cmake.
Код: Выделить всё
emerald: error while loading shared libraries: libemeraldengine.so.0: cannot open shared object file: No such file or directoryТак-что это не из-за конфигурации через Cmake.
-
bormant
- Сообщения: 1354
Re: Конфигурация через cmake.
что говорит
# ldd emerald
?
# ldd emerald
?
-
zenwolf
- Бывший модератор
- Сообщения: 3139
- Статус: Страшный и злой
- ОС: Slackware..Salix..x86_64
Re: Конфигурация через cmake.
BratSinot писал(а): ↑24.05.2010 16:05Короче ничего из выше предложеного не работает. Сейчас emerald скомпилировал та-же песня:
Код: Выделить всё
emerald: error while loading shared libraries: libemeraldengine.so.0: cannot open shared object file: No such file or directory
Так-что это не из-за конфигурации через Cmake.
а в /usr/lib заглядывали ? возможно там есть libemeraldengine.so.0.0.0, если есть делаем линк на libemeraldengine.so.0 (см. второй пост)
вы при компиляции /usr указали ?
Quae videmus quo dependet vultus. (лат) - То, что мы видим, зависит от того, куда мы смотрим.
-
RocksLinux
- Сообщения: 223
- ОС: Slackware
Re: Конфигурация через cmake.
Голова не работает!
Он показал хоть какой-то вывод.
Хорошо бы узнать версию Вашей операционной системы.
Если у Вас не получается собирать ПО из исходников, почему Вы не пользуетесь Slackbuild'ами.
1.su - && ldd emerald && exit
2.find /lib -name 'libemeraldengine.so*'
3.find /lib64 -name 'libemeraldengine.so*'
4.find /usr/lib -name 'libemeraldengine.so*'
5.find /usr/local -name 'libemeraldengine.so*'
Не может быть такого. Либо её нет в системе, либо Вы её неизвестно куда дели (система не знает о её существование), либо требуется создать символическую ссылку. Вам СТО раз уже писали — ПРОВЕРЬТЕ!
http://slackbuilds.org/repository/12.2/desktop/emerald/
http://slak.homelinux.org/index.php?start=...p;file=#results
Он показал хоть какой-то вывод.
Хорошо бы узнать версию Вашей операционной системы.
Если у Вас не получается собирать ПО из исходников, почему Вы не пользуетесь Slackbuild'ами.
1.su - && ldd emerald && exit
2.find /lib -name 'libemeraldengine.so*'
3.find /lib64 -name 'libemeraldengine.so*'
4.find /usr/lib -name 'libemeraldengine.so*'
5.find /usr/local -name 'libemeraldengine.so*'
Не может быть такого. Либо её нет в системе, либо Вы её неизвестно куда дели (система не знает о её существование), либо требуется создать символическую ссылку. Вам СТО раз уже писали — ПРОВЕРЬТЕ!
http://slackbuilds.org/repository/12.2/desktop/emerald/
http://slak.homelinux.org/index.php?start=...p;file=#results
«Знать, что мы знаем то, что мы знаем, и что мы не знаем того, чего мы не знаем — это и есть истинное знание». //Конфуций\\
120 минут классики рока
120 минут классики рока
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Re: Конфигурация через cmake.
Narod, temy mojno zakryt'. Ja tyt yje poshamanil, i ono nachinalo rabotat'.
-
RocksLinux
- Сообщения: 223
- ОС: Slackware
Re: Конфигурация через cmake.
«Знать, что мы знаем то, что мы знаем, и что мы не знаем того, чего мы не знаем — это и есть истинное знание». //Конфуций\\
120 минут классики рока
120 минут классики рока
-
zenwolf
- Бывший модератор
- Сообщения: 3139
- Статус: Страшный и злой
- ОС: Slackware..Salix..x86_64
Re: Конфигурация через cmake.
так, а в чём подшаманили ?
Quae videmus quo dependet vultus. (лат) - То, что мы видим, зависит от того, куда мы смотрим.
-
BratSinot
- Сообщения: 812
- ОС: Slackware64