Skip to content

Files

Latest commit

Jan 30, 2025
28d604a · Jan 30, 2025

History

History

unix

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 25, 2024
Jun 14, 2024
Jun 14, 2024
Jun 14, 2024
Jan 30, 2025
Jun 14, 2024
Jan 25, 2024
Aug 11, 2024
Jun 14, 2024
Nov 7, 2024
Aug 9, 2024

README.md

Building GDAL bindings on unix

Prerequisites

First of all, I wish you to be patient & bring your snacks. Compilation from scratch takes nearly for 1 hour. But from version 3.6 it looks faster with CMake.

NOTE: this pipeline will build only dynamic libraries package.
C# Bindings (aka Core) are currently build in windows

1. Environment

I'm compiling on Debian 11 with GLIBC 2.31 (2020). See CI/CD pipeline for details.

2. Base packages. VCPKG and pipeline scripts won't work without them:

sudo apt-get install g++ make cmake git curl zip unzip tar pkg-config linux-headers-amd64 autoconf automake python3 autoconf-archive swig patchelf 

3. Install .NET

https://learn.microsoft.com/en-us/dotnet/core/install/linux-debian#debian-11.

4. Installing libraries.

Libraries can be installed in two ways.

  1. VPKG - recommended. Latest versions, no collisions with other dynamic libraries.
  2. APT package manager - if vcpkg does not provide any. Can create conficts with other library dependencies.

Each library enables one driver

sudo apt-get install libhdf4-dev libnetcdf-dev

Optional libraries

sudo apt-get install libspatialite-dev libpoppler-dev

5. Compiling

Simply run make in current folder to start GNUmakefile which constists of steps described below. Still, you can execute them sequentially if needed.

# install libraries with VCPKG
make -f vcpkg-makefile BUILD_ARCH=arm64

# install main libraries (proj,gdal)
# > optional use [target]-force to run from scratch, ex. gdal-force
make -f gdal-makefile  BUILD_ARCH=arm64

# collect dynamic libraries 
make -f collect-deps-makefile BUILD_ARCH=arm64

# create packages (output to 'nuget' folder)
make -f publish-makefile pack  BUILD_ARCH=arm64

# testing packages
# > optional PRERELEASE=1 - testing pre-release versions
# > optional APP_RUN=1 - testing via console app run (quick, to ensure deps were loaded correctly)
make -f test-makefile test  BUILD_ARCH=arm64

6. How to check dependencies:

Run tests. If everything loads correctly - you're good.

Or after collecting libraries, run readelf. Don't forget to set LD_LIBRARY_PATH. See copy-deps target in collect-deps for details. Assumming the repo path is /root/gdal.netcore.

readelf -d "/root/gdal.netcore/build-unix/gdal-build/lib/libgdal.so" | grep NEEDED

Or using ldd:

ldd "/root/gdal.netcore/build-unix/gdal-build/lib/libgdal.so"