Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Проблема при компиляции PAM модуля  (Прочитано 954 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SCII-Protos

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Задача: доступ к USB из модуля PAM (по крайне мере взятие серийников у всех USB устройств подключенных  в данный момент к Системе)
Создал модуль PAM
(Нажмите, чтобы показать/скрыть)

компилирую:
(Нажмите, чтобы показать/скрыть)

Использовал libusb-0.1.12, которая установилась:
libusb.so в /usr/local/lib/
usb.h в /usr/local/include/

вот что в логах:
(Нажмите, чтобы показать/скрыть)

Если кто знает, подскажите пожалуйста

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Проблема при компиляции PAM модуля
« Ответ #1 : 21 Май 2010, 19:52:07 »
Конкретно эту проблему это не решит, но:
#include </usr/local/include/usb.h>
это очень плохо, а если учесть сей флаг переданный компилятору:
-I/usr/local/include
то и не нужен тут абсолютный путь. просто делай #include <usb.h>

Собственно по делу.
Сделай на собранную тобой библиотеку:
ldd pam_only_usb.so
Посмотри все ли зависимости оной были найдены, хотя когда не найдена библиотека по другому должна выглядеть ругань.
Попробуй сделать nm на библиотеку /usr/local/lib/libusb.so посмотри есть ли в ней символ usb_init Проверь, что приложение которое использует твою либу подцепляет правильные версии библиотек (ldd в помощь). Если что-то берётся из /usr/lib, а должно из /usr/local/lib то настрой LD_LIBRARY_PATH либо собери с RPATH.


Пользователь решил продолжить мысль 21 Май 2010, 20:16:45:
Хотя в твоём случае проверка того в чём дело будет походу не такой простой. Одним ldd может не получится обойтись. Если я правильно понимаю эта библиотека открывается через dlopen в рантайме. Ещё возможно при загрузке PAM модуля игнорируется LD_LIBRARY_PATH по соображениям безопасности. Узнай по каким путям ищутся зависимости при загрузке модуля PAM.
« Последнее редактирование: 21 Май 2010, 20:16:45 от VestniK »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Проблема при компиляции PAM модуля
« Ответ #2 : 22 Май 2010, 10:37:47 »
А еще лучше немного напрячся и родить альтернативный план действий!

1) Долго думаешь нахрена надо было совокупляться с установкой и без того установленной библиотеки
dpkg -l | grep libusb
2) Берешь и сносишь libusb который ты скомпилил из исзходников и установил в /usr/local и делаешь наколку "Я больше не буду заниматься самодеятельностью"
3) Устанавливаешь пакет с заголовками и прочей шелухой для libusb
sudo aptitude install libusb-dev
И не надо указывать всякие дурацкие LD_LIBRARY_PATH, флаги компилятору и полные пути в исходниках

Если не поможет, действительно придется курить доки по PAM. Какие он библиотеки умеет всасывать.

Оффлайн SCII-Protos

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Проблема при компиляции PAM модуля
« Ответ #3 : 24 Май 2010, 11:13:36 »
Удалил своё безобразие, установил. Естественно сейчас libusb.so в /usr/lib/, usb.h в/usr/include
Не помогло  :'(

Проверил с помощью ldd

опа опа пока писал, решил кое-что сделать и почти получилось как добью отпишу  :D

Пользователь решил продолжить мысль 24 Май 2010, 11:46:34:
Помогла вот такая строка компиляции (почему-то аналогичная строка для предыдущей библиотекм не работала , теперь все зависимости уж точно найдены (спс за ldd))
root@3:/home/nikolaika/rab_so_usb# gcc -c -fPIC pam_nhm_usb.c
root@3:/home/nikolaika/rab_so_usb# gcc -shared -fPIC -o pam_nhm_usb.so pam_nhm_usb.o /usr/lib/libusb.so

Благодарю за помощь, и постараюсь больше не заниматься самодеятеьностью  :-[
« Последнее редактирование: 24 Май 2010, 11:46:34 от SCII-Protos »

 

Страница сгенерирована за 0.061 секунд. Запросов: 25.