Compiling GDAL using proprietary library to support ECW file format - Ubuntu
QGIS uses GDAL for file formats.
1. UPDATE -
unzip ERDAS_ECWJP2_SDK-5.4.0.bin.zip
chmod +x ./ERDAS_ECWJP2_SDK-5.4.0.bin
2. Run bin - Choose Option 1. Desktop_Read-Only
./ERDAS_ECWJP2_SDK-5.4.0.bin
3. Copy installed files to /usr/local/hexagon_ecw
sudo mkdir -p /usr/local/hexagon_ecw
sudo cp -r hexagon/ERDAS-ECW_JPEG_2000_SDK-5.4.0/Desktop_Read-Only/* /usr/local/hexagon_ecw
4. Make symbolic link to libs like libNCSEcw.so.**
sudo ln -s /usr/local/hexagon_ecw/lib/x64/release/* /usr/local/lib/
5. Download and install proper PROJ version
Get PROJ version from Help->About Mine is 6.3.1
Download from https://github.com/OSGeo/PROJ/releases.
tar -xvf proj-6.3.1.tar.gz
cd proj-6.3.1
mkdir build
cd build
cmake .. # had to install libsqlite3-dev dependency
make -j$(nproc)
sudo make install
6. Downlad GDAL for specific QGIS version
Get GDAL version from Help->About QGIS 3.26.3 uses gdal 3.0.4
Download from http://download.osgeo.org/gdal
tar -xvzf gdal-3.0.4.tar.gz
cd gdal-3.0.4
./configure --with-ecw=/usr/local/hexagon_ecw
make -j$(nproc) # Compile takes a lot of time...
sudo make install
If you get errors on make
above, use this beforrebellow before the make command above (from here)
export LD_LIBRARY_PATH=//usr/local/hexagon_ecw/lib/cpp11abi/x64/release:$LD_LIBRARY_PATH
7. Set env. variables
echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> ~/.profile
echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> ~/.bashrc
GDAL_DATA="/usr/local/share/gdal"
ldconfig
8. Check if ECW is installed
gdalinfo --formats | grep ECW
Based and updated from here.
Tested on Ubuntu 22.04 and 20.04