Я пытаюсь получить поддержку MrSID в QGIS 2.4 в Ubuntu 14.04. В соответствии с этим руководством вы должны пересобрать libgdal для MrSID SDK из LizardTech. Но я не могу найти пакет libgdal-mrsid-src, как указано в инструкции. Однако, похоже, что это могло быть слито в пакет libgdal-dev. Когда я пытаюсь установить этот пакет, мне говорят, что я должен установить libmysqlclient-dev, но не могу установить libmysqlclient-dev, так как у меня установлена MariaDB 10.
Полное сообщение об ошибке:
Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: libmysqlclient-dev : Depends: libmysqlclient18 (= 5.5.38-0ubuntu0.14.04.1) but 10.0.10+maria-1~saucy is to be installed E: Unable to correct problems, you have held broken packages
Итак, вот мои первые два вопроса:
Правильно ли я насчет libgdal-mrsid-src пакет объединяется с пакетом libgdal-dev?
Ответ: Да, но вы должны использовать
apt-get source libgdal-dev
Если ответ на 1 - «да», то как мне исправить конфликт и при этом сохранить MariaDB 10?
Ответ: Кажется, это скорее красная селедка, как и я не уверен, что libgdal-dev действительно должен быть установлен. Тем не менее, если вы запустите
apt-get install libgdal-dev libmariadbclient-dev
, зависимости, кажется, будут выполнены.
Теперь я дошел до того, что стал неуверенным в своих шагах. В каталоге gdal-1.10.1 + dfsg, который создается в результате установки исходных текстов, я запускаю
./configure --with-gdal=/usr/bin/gdal-config \ --with-mrsid=/path/to/MrSID_DSDK/Raster_DSDK \ --with-mrsid_lidar=/path/to/MrSID_DSDK/Lidar_DSDK \ --with-jp2mrsid=yes --with-geotiff=yes make make install
Однако, он собирает полный пакет gdal и устанавливает его в / usr / local / bin вместо / usr / bin (место установки apt-get). Этот пакет также не имеет поддержки mysql (угадайте, вопрос 2 может не быть такой красной сельдью в конце концов). Не говоря уже о том, что я не собираюсь собирать полный пакет из исходного кода.
Другой вариант, который я попробовал, состоял в том, чтобы просто скомпилировать плагин mrsid для gdal. Остановив приведенные выше инструкции после команды configure, я перешел в каталог /gdal-1.10.1+dfsg/frmts/mrsid и запустил make plugin libgdal-mrsid
, что привело к следующей ошибке:
/bin/bash /root/gdal-1.10.1+dfsg/libtool --mode=compile --tag=CXX g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c -o mrsiddataset.o mrsiddataset.cpp libtool: compile: g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsiddataset.cpp -fPIC -DPIC -o .libs/mrsiddataset.o mrsiddataset.cpp: In member function 'virtual CPLErr MrSIDRasterBand::IReadBlock(int, int, void*)': mrsiddataset.cpp:552:64: warning: 'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' is deprecated (declared at /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565) [-Wdeprecated-declarations] memcpy( pImage, poGDS->poBuffer->getTotalBandData(nBand - 1), ^ mrsiddataset.cpp: In member function 'virtual CPLErr MrSIDDataset::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, int, int*, int, int, int)': mrsiddataset.cpp:979:68: warning: 'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' is deprecated (declared at /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565) [-Wdeprecated-declarations] oLTIBuffer.getTotalBandData( panBandMap[iBand] - 1 ); ^ mrsiddataset.cpp:1017:47: warning: 'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' is deprecated (declared at /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565) [-Wdeprecated-declarations] panBandMap[iBand] - 1 ); ^ libtool: compile: g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsiddataset.cpp -o mrsiddataset.o >/dev/null 2>&1 /bin/bash /root/gdal-1.10.1+dfsg/libtool --mode=compile --tag=CXX g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c -o mrsidstream.o mrsidstream.cpp libtool: compile: g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsidstream.cpp -fPIC -DPIC -o .libs/mrsidstream.o libtool: compile: g++ -g -O2 -DHAVE_SSE_AT_COMPILE_TIME -Wall -I/root/gdal-1.10.1+dfsg/port -I/root/gdal-1.10.1+dfsg/gcore -I/root/gdal-1.10.1+dfsg/alg -I/root/gdal-1.10.1+dfsg/ogr -I/root/gdal-1.10.1+dfsg/ogr/ogrsf_frmts -DMRSID_J2K -I/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include -I../../frmts/gtiff/libgeotiff -DOGR_ENABLED -D_REENTRANT -I/root/gdal-1.10.1+dfsg/port -c mrsidstream.cpp -o mrsidstream.o >/dev/null 2>&1 mrsiddataset.o mrsidstream.o -L/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/3rd-party/lib -L/usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/lib -lltidsdk -lpthread -o gdal_MrSID.so /bin/bash: mrsiddataset.o: command not found make: *** [gdal_MrSID.so] Error 127
Я о готов отказаться от добавления поддержки MrSID, но я не могу не чувствовать, что я близок, и мне просто нужно сделать небольшой шаг здесь или там.
Я полагаю, что Вы очень близки. Последней строке Вашего вывода нужна команда для создания библиотеки доли:
g++ -shared
сопровождаемый остальной частью последней строки должен создать Ваш gdal_MrSID.so файл.