Ubuntu 14.04 中对 QGIS 2.4 的 MrSID 支持

Ubuntu 14.04 中对 QGIS 2.4 的 MrSID 支持

我正在尝试在 Ubuntu 14.04 中的 QGIS 2.4 中获得 MrSID 支持。根据本教程您必须针对 LizardTech 的 MrSID SDK 重建 libgdal。但我找不到说明中提到的 libgdal-mrsid-src 包。但是,似乎它可能已合并到 libgdal-dev 包中。当我尝试安装此包时,系统提示我必须安装 libmysqlclient-dev,但由于我已安装 MariaDB 10,因此无法安装 libmysqlclient-dev。

完整错误信息为:

    某些软件包无法安装。这可能意味着您有
    请求一个不可能的情况,或者如果你正在使用不稳定
    发行版中某些必需的软件包尚未创建
    或已移出传入。
    以下信息可能有助于解决该情况:

    以下软件包具有未满足的依赖关系:   
     libmysqlclient-dev:依赖:libmysqlclient18(= 5.5.38-0ubuntu0.14.04.1)但
 10.0.10+maria-1~saucy 即将安装
    E:无法纠正问题,您持有破损的包裹

以下是我最初的两个问题:

  1. 我对 libgdal-mrsid-src 包与 libgdal-dev 包合并的说法正确吗?

    回答:是的,但你必须使用apt-get source libgdal-dev

  2. 如果对 1 的回答是肯定的,那么我该如何纠正冲突并保留 MariaDB 10?

    回答:这似乎更像是一个转移注意力的借口,因为我不确定 libgdal-dev 是否​​真的需要安装。但是,如果你运行,apt-get install libgdal-dev libmariadbclient-dev依赖关系似乎已经得到满足。

现在我对自己要采取的步骤感到不确定了。在安装源代码创建的 gdal-1.10.1+dfsg 目录中,我运行

./配置--with-gdal = / usr / bin / gdal-config \
            --with-mrsid=/路径/到/MrSID_DSDK/Raster_DSDK \
            --with-mrsid_lidar=/路径/到/MrSID_DSDK/Lidar_DSDK \
            --with-jp2mrsid=yes --with-geotiff=yes

制作
进行安装

但是,这会构建完整的 gdal 包并将其安装在 /usr/local/bin 中,而不是 /usr/bin(apt-get 安装位置)。此包也不支持 mysql(猜想问题 2 可能并不是一个转移注意力的借口)。更不用说,我无意从源代码构建完整的包。

我尝试的另一个选项是只编译 gdal 的 mrsid 插件。在 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:编译: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:在成员函数“virtual CPLErr MrSIDRasterBand::IReadBlock(int, int, void*)”中:
mrsiddataset.cpp:552:64:警告:'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' 已弃用(在 /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:在成员函数“virtual CPLErr MrSIDDataset::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, int, int*, int, int, int)”中:
mrsiddataset.cpp:979:68:警告:'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' 已弃用(在 /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565 声明)[-Wdeprecated-declarations]
                 oLTIBuffer.获取总BandData(panBandMap[iBand] - 1 );
                                                                    ^
mrsiddataset.cpp:1017:47:警告:'void* LizardTech::LTISceneBuffer::getTotalBandData(lt_uint16) const' 已弃用(在 /usr/share/MrSID_DSDK-9.1.0.4045/Raster_DSDK/include/lti_sceneBuffer.h:565 声明)[-Wdeprecated-declarations]
                         平移波段地图[iBand] - 1 );
                                               ^
libtool:编译: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:编译: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:编译: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:未找到命令
制作:*** [gdal_MrSID.so] 错误 127

我已经准备好放弃添加 MrSID 支持了,但我不禁感到我已经接近了,只需要在这里或那里修复一小步。

答案1

我相信你已经很接近了。你输出的最后一行需要创建共享库的命令:

g++ -shared紧接着最后一行的其余部分应该创建你的 gdal_MrSID.so 文件。

相关内容