### Compiling GDAL using proprietary library to support ECW file format - Ubuntu

### QGIS uses GDAL for file formats. 

##### 1. UPDATE - Download zip file from [here][1]

Version 5.5 or newer so far I tested not working. Cannot use hexagon support portal. Stick with 5.4


```
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
```
##### 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][2].

Tested on Ubuntu 22.04 and 20.04 


  [1]: https://drive.google.com/file/d/1EZnwRzDgbYd_kTiDqigmJbON5REDha5s/view?usp=sharing
  [2]: https://www.reddit.com/r/QGIS/comments/icw98f/problem_loading_ecw_file_in_ubuntu_linux/