{"id":10047,"date":"2025-10-14T13:10:28","date_gmt":"2025-10-14T16:10:28","guid":{"rendered":"https:\/\/www.fernandoquadro.com.br\/html\/?p=10047"},"modified":"2025-10-14T13:10:28","modified_gmt":"2025-10-14T16:10:28","slug":"compilar-o-gdal-com-mrsid-no-suse-linux","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2025\/10\/14\/compilar-o-gdal-com-mrsid-no-suse-linux\/","title":{"rendered":"Compilar o GDAL com MrSID no SuSe Linux"},"content":{"rendered":"<p>Prezados leitores,<\/p>\n<p>Nesses \u00faltimos dias precisei instalar o GDAL e o MrSID em uma m\u00e1quina que rodava o SuSe Linux Enterprise Server 15 SP6 (SLES). Como a biblioteca libgdaljava n\u00e3o estava dispon\u00edvel eu precisei compilar tudo na m\u00e3o. Acabei passando por alguns perrengues, mas no final consegui compilar e habilitar tudo no GeoServer. Vou compartilhar o passo a passo, caso algu\u00e9m esteja passando pelo mesmo problema:<\/p>\n<p><strong>1. Instalar SDK do MrSID<\/strong><\/p>\n<p>Para compilar o MrSID \u00e9 necess\u00e1rio baixar o seu SDK no site da Extensis. A vers\u00e3o utilizada nesse tutorial foi: MrSID DSDK 9.5.5.5244 &#8211; rhel9.x86-64.gcc1131<\/p>\n<pre>\r\n> wget https:\/\/bin.extensis.com\/download\/developer\/MrSID_DSDK-9.5.5.5244-rhel9.x86-64.gcc1131.zip\r\n<\/pre>\n<p>Agora vamos extrair e mover o SDK para a pasta \/opt:<\/p>\n<pre>\r\n> sudo unzip MrSID_DSDK-9.5.5.5244-rhel9.x86-64.gcc1131.zip -d \/opt\/MrSID\/\r\n> cd \/opt\/MrSID\r\n> sudo chown root:root -R MrSID\/\r\n> sudo ln -sfn \/opt\/MrSID\/MrSID_DSDK-9.5.5.5244-rhel9.x86-64.gcc1131 \/opt\/MrSID\/current\r\n> sudo ldconfig\r\n<\/pre>\n<p><strong>2. Instala\u00e7\u00e3o do GDAL<\/strong><\/p>\n<p>O primeiro passa foi atualizar e habilitar os reposit\u00f3rios adicionais no SLES:<\/p>\n<pre>\r\n> sudo SUSEConnect --product sle-module-development-tools\/15.6\/x86_64\r\n> sudo zypper refresh\r\n<\/pre>\n<p>Depois foi necess\u00e1rio instalar as depend\u00eancias b\u00e1sicas para compila\u00e7\u00e3o:<\/p>\n<pre>\r\n> sudo zypper install gcc gcc-c++ gcc13 gcc13-c++ make cmake ninja \\\r\n  libtool automake autoconf git curl wget unzip bison flex swig\r\n> sudo zypper install unzip zip tar which htop net-tools iproute2 ant\r\n<\/pre>\n<p>E tamb\u00e9m as depend\u00eancias de bibliotecas geoespaciais:<\/p>\n<pre>\r\n> sudo zypper install proj proj-devel geos geos-devel sqlite3 sqlite3-devel \\\r\n  libtiff-devel libjpeg8-devel libpng16-devel libcurl-devel\r\n<\/pre>\n<p>E por \u00faltimo para evitar erros na hora de rodar o make install, instalei o Python + Numpy:<\/p>\n<pre>\r\n> sudo zypper install python311 python311-devel python311-numpy python311-pip\r\n> python3.11 -m pip install --user --upgrade pip\r\n> python3.11 -m pip install --user \"numpy==1.26.4\"\r\n<\/pre>\n<p>Agora vamos baixar e preparar o GDAL para a compila\u00e7\u00e3o. No nosso exemplo estamos usando o GDAL 3.10.1:<\/p>\n<pre>\r\n> wget https:\/\/download.osgeo.org\/gdal\/3.10.1\/gdal-3.10.1.tar.gz\r\n> tar -xvzf gdal-3.10.1.tar.gz\r\n> cd gdal-3.10.1\r\n> mkdir build && cd build\r\n<\/pre>\n<p>E necess\u00e1rio tamb\u00e9m apontar o compilador para o gcc13\/g++13 no ambiente de build<\/p>\n<pre>\r\n> export CC=\/usr\/bin\/gcc-13\r\n> export CXX=\/usr\/bin\/g++-13\r\n> SWIG_BIN=$(command -v swig || command -v swig4)\r\n> NUMPY_INC=$(python3.11 -c 'import numpy; print(numpy.get_include())')\r\n> JAVA_HOME=$(dirname \"$(dirname \"$(readlink -f \"$(which javac)\")\")\")\r\n<\/pre>\n<p>Chegou a hora, vamos compilar o GDAL com suporte ao MrSID e JPEG2k usando o CMake e o Ninja, veja:<\/p>\n<pre>\r\n> cmake -G \"Ninja\" .. \\\r\n  -DCMAKE_BUILD_TYPE=Release \\\r\n  -DCMAKE_INSTALL_PREFIX=\/usr\/local \\\r\n  -DCMAKE_INSTALL_LIBDIR=lib \\\r\n  -DBUILD_SHARED_LIBS=ON \\\r\n  -DGDAL_ENABLE_PLUGINS=ON \\\r\n  -DBUILD_PYTHON_BINDINGS=ON \\\r\n  -DBUILD_JAVA_BINDINGS=ON \\           \r\n  -DGDAL_USE_GEOTIFF_INTERNAL=ON \\\r\n  -DGDAL_HIDE_INTERNAL_SYMBOLS=OFF \\\r\n  -DGDAL_ENABLE_DRIVER_MRSID_PLUGIN=ON \\\r\n  -DGDAL_ENABLE_DRIVER_MRSID=ON \\\r\n  -DGDAL_ENABLE_DRIVER_JP2MRSID=ON \\\r\n  -DCMAKE_INSTALL_RPATH=\"\/usr\/local\/lib:\/usr\/local\/lib64:\/usr\/local\/lib\/jni\" \\\r\n  -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \\\r\n  -DMRSID_LIBRARY=\/opt\/MrSID\/current\/Raster_DSDK\/lib\/libltidsdk.so \\\r\n  -DMRSID_INCLUDE_DIR=\/opt\/MrSID\/current\/Raster_DSDK\/include \\\r\n  -DPython3_EXECUTABLE=\/usr\/bin\/python3.11 \\\r\n  -DPython3_NumPy_INCLUDE_DIRS=\"${NUMPY_INC}\" \\\r\n  -DSWIG_EXECUTABLE=\"${SWIG_BIN}\" \\\r\n  -DJAVA_HOME=\"${JAVA_HOME}\"\r\n\r\n> ninja -j\"$(nproc)\"\r\n> sudo ninja install\r\n<\/pre>\n<p>Verifique se a biblioteca <strong>libgdalalljni.so<\/strong> foi criada:<\/p>\n<pre>\r\n> ldd \/usr\/local\/lib\/jni\/libgdalalljni.so | grep gdal\r\n<\/pre>\n<p>Caso a lib n\u00e3o tenha sido criado, voc\u00ea precisa cri\u00e1-la, pois ela \u00e9 essencial para a integra\u00e7\u00e3o com o GeoServer, ent\u00e3o voc\u00ea pode criar da seguinte maneira:<\/p>\n<pre>\r\n> ninja gdalalljni\r\n> sudo ldconfig\r\n<\/pre>\n<p>Vamos atualiza o cache das bibliotecas:<\/p>\n<pre>\r\n> echo \"\/usr\/local\/lib\" | sudo tee \/etc\/ld.so.conf.d\/gdal.conf\r\n> echo \"\/usr\/local\/lib\/jni\" | sudo tee \/etc\/ld.so.conf.d\/gdal-jni.conf\r\n> echo \"\/opt\/MrSID\/current\/Raster_DSDK\/lib\" | sudo tee \/etc\/ld.so.conf.d\/mrsid.conf\r\n> sudo ldconfig\r\n<\/pre>\n<p>Agora vamos verificar se est\u00e1 tudo correto, pra isso execute os comandos abaixo:<\/p>\n<pre>\r\n> gdalinfo --version\r\n> gdalinfo --formats | grep -Ei 'mrsid|jp2mrsid'\r\n> ldd \/usr\/local\/lib\/jni\/libgdalalljni.so | grep gdal\r\n<\/pre>\n<p>Ap\u00f3s executar os passos acima, as sa\u00eddas abaixo indicam que todo o processo correu bem.<\/p>\n<pre>\r\n  GDAL 3.10.1, released 2025\/01\/08\r\n  MrSID -raster- (rov): Multi-resolution Seamless Image Database (MrSID) (*.sid)\r\n  JP2MrSID -raster- (rov): MrSID JPEG2000 (*.jp2)\r\n  libgdal.so.36 => \/usr\/local\/lib\/libgdal.so.36 (0x00007fdcbb400000)\r\n<\/pre>\n<p>Agora para fnalizar \u00e9 s\u00f3 voc\u00ea habilitar no GeoServer, para isso basta adicionar as seguintes linhas no seu arquivo de inicializa\u00e7\u00e3o do GeoServer:<\/p>\n<pre>\r\n-DGDAL_DATA=\/usr\/local\/share\/gdal\r\n-Djava.library.path=\/usr\/local\/lib:\/usr\/local\/lib\/jni:\/opt\/MrSID\/current\/Raster_DSDK\/lib\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Prezados leitores, Nesses \u00faltimos dias precisei instalar o GDAL e o MrSID em uma m\u00e1quina que rodava o SuSe Linux Enterprise Server 15 SP6 (SLES). Como a biblioteca libgdaljava n\u00e3o estava dispon\u00edvel eu precisei compilar tudo na m\u00e3o. Acabei passando&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2025\/10\/14\/compilar-o-gdal-com-mrsid-no-suse-linux\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":10057,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[348,208],"class_list":["post-10047","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-gdal","tag-geoserver"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/10047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=10047"}],"version-history":[{"count":10,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/10047\/revisions"}],"predecessor-version":[{"id":10058,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/10047\/revisions\/10058"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/10057"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=10047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=10047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=10047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}