LINUX.ORG.RU

captmon (из cndrvcups-capt) не линкуется с libpopt

 cndrvcups-capt, , libpopt


0

1

При том, что libpopt наличествует:

# ldconfig -p | grep libpopt
        libpopt.so.0 (libc6,x86-64) => /usr/lib64/libpopt.so.0
        libpopt.so.0 (libc6,x86-64) => /usr/lib32/libpopt.so.0
        libpopt.so (libc6,x86-64) => /usr/lib64/libpopt.so
        libpopt.so (libc6,x86-64) => /usr/lib32/libpopt.so
# captmon
captmon: error while loading shared libraries: libpopt.so.0: wrong ELF class: ELFCLASS64
# ldd /usr/bin/captmon
        linux-gate.so.1 (0xf76ed000)
        libxml2.so.2 => /usr/lib32/libxml2.so.2 (0xf7596000)
        libpopt.so.0 => not found
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf757b000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf7576000)
        libc.so.6 => /lib32/libc.so.6 (0xf73d0000)
        libz.so.1 => /lib32/libz.so.1 (0xf73bb000)
        libm.so.6 => /lib32/libm.so.6 (0xf738f000)
        /lib/ld-linux.so.2 (0xf76ee000)

revdep-rebuild не помогает.

Дня доброго. Есть идеи, как исправить?

P.S.: ebuild: http://gpo.zugaina.org/AJAX/Ebuild/2549659/View.

P.P.S.: на 64-битной ubuntu завёлся, там также поставил 32-битный popt и сопутствующие библиотеки. Версия cndrvcups 2.40. Хотелось бы понять, что ему не нравится в gentoo.

Решено. Взял libpopt с ubuntu - заработало. С пакетом emul-linux-x86-bjdeps (из репы calculate, но в zugaina и daks ебилды идентичные) по неизвестным причинам всё равно ставился 64-битный popt.

★★

Последнее исправление: Y (всего исправлений: 6)

гхрм, ну ты молодец - линковать 32-битное приложение с 64-битной библиотекой. Научишь? :-)

По теме - я думаю, надо выяснить, почему у тебя в системе нет 32-битной libpopt и поставить ее.

Pinkbyte ★★★★★
()

При том, что libpopt наличествует:
libpopt.so.0: wrong ELF class: ELFCLASS64

Идиот.

anonymous
()
Ответ на: комментарий от Pinkbyte

В системе установлена 32-битная версия библиотеки, что видно из представленного вывода ldconfig: libpopt.so.0 (libc6,x86-64) => /usr/lib32/libpopt.so.0. (он и был представлен собственно для того, чтобы избежать вот этих вопросов) Обратите внимание на lib32. Она находится в пакете app-emulation/emul-linux-x86-bjdeps:

$ eix emul bjdep
[I] app-emulation/emul-linux-x86-bjdeps [1]
     Available versions:  (~)0.1-r2{tbz2}
     Installed versions:  0.1-r2{tbz2}(19:18:02 27.07.2012)
     Homepage:            http://rpm5.org/
     Description:         32bit nls-disabled dev-libs/popt-1.13

[1] "calculate" /var/lib/layman/calculate

Более того, как видно из вывода ldd, бинарник прекрасно слинковался с другими библиотеками 32-битной версии (которые в системе также представлены в обоих вариациях). Чем именно libpopt отличился понять не могу.

Y ★★
() автор топика
Ответ на: комментарий от Artificial_Thought

Спасибо за ссылку. Любопытно.

С удовольствием. Пока надо печатать на чём дано.

Y ★★
() автор топика
Ответ на: комментарий от Pinkbyte

Спасибо ещё раз. Я слеп. Смотрел только на то, что либа лежит в папке lib32, а то, что в скобках x86_64 написано - не видел. Взял libpopt с убунту - заработало.

Y ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.