Соединение проблем с libjpeg

Печально Репозитории KDEMod больше не активны.

Используйте это теперь.

3
30.11.2011, 12:01
2 ответа

Используйте LD_LIBRARY_PATH. Обратитесь к этим полезным ссылкам также:

http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

http://linuxmafia.com/faq/Admin/ld-lib-path.html

3
27.01.2020, 21:20
  • 1
    Спасибо, это хорошие чтения. Посмотрите мое редактирование выше - я думаю, что сузил проблему. Я не думаю, что установка LD_LIBRARY_PATH необходима, и Ваша вторая ссылка обеспечивает некоторые неопровержимые доводы, чтобы не сделать так так или иначе. –  notlesh 30.11.2011, 12:03
  • 2
    Намечено принял решение добавить вторую ссылку, подчеркивающую на если не для использования переменной. Кажется, что Вы фигурировали. –  Nikhil Mulley 30.11.2011, 12:06
  • 3
    btw, если бы Вы уверены в пути к библиотеке libjpeg, не возражал бы пробовать-Wl,-rpath, опцией (LIB_PATH) $ gcc и видел бы, как это идет. –  Nikhil Mulley 30.11.2011, 12:08

Следующая ссылка решила для меня эту проблему. Как вы можете ссылаться на конкретную версию разделяемой библиотеки в GCC

Выдержка из ссылки, которая помогла мне-

Вместо того, чтобы использовать "-lcurl", используйте "-l:libcurl.so.3". " И конечно же используйте "-L _installed_path_"

Моя ошибка была обратной - "Неправильная версия библиотеки JPEG: библиотека 80, вызывающий абонент ожидает 62"

Чтобы узнать с какой jpeg библиотекой был скомпонован мой бинарник, я сделал-

ldd my_binary | grep jpeg

вывод был-

libjpeg.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so.8

Очевидно, что бинарник зависел от libjpeg8 (библиотека 80), поэтому я и получил ошибку.

Чтобы узнать, действительно ли у меня в системе есть libjpeg62, я сделал

ldconfig -p | grep jpeg

вывод был-

libplayerjpeg.so.3.0 (libc6,x86-64) => /usr/lib/libplayerjpeg.so.3.0
libopenjpeg.so.2 (libc6,x86-64) => /usr/lib/libopenjpeg.so.2
libjpeg.so.62 (libc6,x86-64) => /usr/local/lib/libjpeg.so.62
libjpeg.so.62 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so.62
libjpeg.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so.8
libjpeg.so.8 (libc6) => /usr/lib/i386-linux-gnu/libjpeg.so.8
libjpeg.so (libc6,x86-64) => /usr/local/lib/libjpeg.so
libjpeg.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so

Так что в моем случае, вместо того, чтобы просто использовать -ljpeg, я использовал это (в файле make)-

-L/usr/lib/x86_64-linux-gnu/ -l:libjpeg.so.62

Не забудьте заменить #include (jpeglib.h> в вашем cpp-файле на

extern "C" {
#include "jpeglib.h" }
1
27.01.2020, 21:20

Теги

Похожие вопросы