Неправильная версия библиотеки JPEG с VIPS, созданным с помощью libjpeg-turbo

Я собрал VIPS 8.1.1 с помощью

libjpeg-turbo-official           1.4.2-2050921

Я скачал пакет с веб-сайта проекта sourceforge. После установки пакета я настраиваю Vips с помощью

./configure --with-jpeg-includes=/opt/libjpeg-turbo/include --with-jpeg-libraries=/opt/libjpeg-turbo/lib64/libjpeg.a

Когда я пытался либо загрузить файл jpeg, либо сохранить файл jpeg, у меня появилось это сообщение об ошибке:

VipsJpeg: Wrong JPEG library version: library is 80, caller expects 62

Я неправильно построил VIPS? Должен ли я собирать другую версию libjpeg-turbo? Или проблема в другом?

Я нашел еще один файл библиотеки с именем libjpeg.so.62, попытался удалить Vips и заново собрать его с этим файлом, но проблема не устранена.


person user3667217    schedule 09.11.2015    source источник


Ответы (1)


Это сообщение создается libjpeg, если заголовки не соответствуют библиотеке. Похоже, вы собрались с заголовками .62, но пытались запустить с бинарным файлом библиотеки .80.

Проверьте вашу систему на наличие старых заголовочных файлов и удалите их. Может apt-get remove libjpeg-dev?

person jcupitt    schedule 09.11.2015
comment
В папке, которую я указал для jpeg-libcludes, есть только jpgelib.h для установленного мной libjpge-turbo-official. Его расположение отличается от любой другой библиотеки jpge, существующей на компьютере. Я все равно не могу их удалить, потому что они нужны какой-то другой программе. Ищет ли Vips jpeglib.h помимо указанного места? - person user3667217; 09.11.2015
comment
gcc всегда будет искать jpeglib.h во всех каталогах на -I. Проверьте точные флаги, которые достигают компилятора, чтобы увидеть, какой из них он выбирает. Вы должны иметь возможность удалить -dev версию пакета, в ней есть только заголовки, ни одна программа не нуждается в ней во время выполнения. - person jcupitt; 09.11.2015
comment
Вы не говорите, какую платформу используете, но у вас, вероятно, платформа libjpeg-turbo. Я бы использовал это, а не создавал свой собственный. У него такой же ABI, так что это простая замена. - person jcupitt; 09.11.2015
comment
Я использую убунту 14.04 LTS. Ведь на нем уже есть libjpeg-turbo. Где я могу увидеть, какой jpeglib.h подобрал компилятор? - person user3667217; 10.11.2015
comment
О, идеально. Это те же самые заголовки, просто удалите созданный вами libjpeg-turbo, не давайте vips никаких флагов, и он автоматически подберет турбо-версию. Используйте ldd, чтобы проверить, с какой библиотекой он связан во время выполнения. - person jcupitt; 10.11.2015
comment
Так что действительно Vips нельзя собрать с помощью libjpeg-tubro-official, версии, которую я скачал с веб-сайта проекта. Указав Vips использовать libjpeg-turbo8-dev, который уже есть в Ubuntu, я могу успешно собрать Vips и использовать библиотеку jpeg. Забавно, потому что OpenCV можно собрать с помощью libjpeg-turbo-official, но не libjpeg-turbo8-dev, поставляемого с Ubuntu. - person user3667217; 11.11.2015