- Edited
Hello,
I am trying to compile POSTGIS 3.3 locally. However, after several days of building dependencies, I am stuck at compiling GDAL. The problem is that despite I configured CMAKE to look for local Sqlite3 (version 3.44), it keeps falling back to system-wide (version 3,7,17) which is not supported by any of the libraries that are using Sqlite3:
#Download and install gdal 3.6.4
cd $PREFIX/src
wget http://download.osgeo.org/gdal/3.6.4/gdal-3.6.4.tar.gz
tar xvf gdal-3.6.4.tar.gz
cd gdal-3.6.4
mkdir build
cd build
export C_INCLUDE_PATH=$PREFIX/include
export CPLUS_INCLUDE_PATH=$PREFIX/include
export LIBRARY_PATH=$PREFIX/lib
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=$PREFIX/bin/gcc \
-DCMAKE_CXX_COMPILER=$PREFIX/bin/g++ \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DSQLite3_INCLUDE_DIR=$PREFIX/include \
-DSQLite3_LIBRARY=$PREFIX/lib/libsqlite3.so \
-DSQLITE3EXT_INCLUDE_DIR=$PREFIX/include \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_INSTALL_RPATH=$PREFIX/lib64
cmake --build . -j8
cmake --build . --target install
Here is the complete script I made until now (I compiled and installed all needed libraries and after GDAL, I only have to compile Postgres and PostGIS):
mkdir -p ~/opt/src
cd ~/opt/src
export PREFIX=$HOME/opt
export PATH=$PREFIX/bin:$PATH
#Download and install Flex 2.6.4, needed for GCC 11
cd ~/opt/src
wget https://github.com/westes/flex/files/981163/flex-2.6.4.tar.gz
tar xvzf flex-2.6.4.tar.gz
cd flex-2.6.4
./configure --prefix=$PREFIX \
--docdir=$PREFIX/share/doc/flex-2.6.4 \
--disable-static
make
make install
#Download and install gmp 6.3.0 (needed for binutils)
cd $PREFIX/src
wget https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz
unxz gmp-6.3.0.tar.xz
tar -xvf gmp-6.3.0.tar
cd gmp-6.3.0
./configure --enable-cxx \
--prefix=$PREFIX
make
make install
make distclean
#Download and install mpfr 4.2.1 (needed for binutils)
cd $PREFIX/src
wget https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.gz
tar -xvf mpfr-4.2.1.tar.gz
cd mpfr-4.2.1
./configure --prefix=$PREFIX
make
make install
make distclean
#Download and install texinfo 7.1 (needed for makeinfo needed for binutils)
cd $PREFIX/src
wget https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.gz
tar -xvf texinfo-7.1.tar.gz
cd texinfo-7.1
./configure --prefix=$PREFIX
make
make install
make distclean
#Download and install binutils 2.41
git clone git://sourceware.org/git/binutils-gdb.git ~/opt/src/binutils
git checkout remotes/origin/binutils-2_41-branch
mkdir -p $PREFIX/src/binutils-241-build
cd $PREFIX/src/binutils-241-build
$PREFIX/src/binutils/configure --with-mpfr=$HOME/opt --with-gmp=$HOME/opt --prefix=$HOME/opt
make -j9
make install
make distclean
#Download and install GCC 11
git clone git://gcc.gnu.org/git/gcc.git ~/opt/src/gcc/
git checkout remotes/origin/releases/gcc-11
cd $HOME/opt/src/gcc
./contrib/download_prerequisites
mkdir -p $PREFIX/src/gcc-11-build
cd $PREFIX/src/gcc-11-build
$PREFIX/src/gcc/configure --prefix=$PREFIX --enable-languages=c,c++ --disable-multilib
make -j9
make install
#Download and install newer version of cmake as per Sean from Opalstack
#https://community.opalstack.com/d/1242-gollum-wiki-install
wget https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-linux-x86_64.tar.gz
tar zxf cmake-3.27.7-linux-x86_64.tar.gz
mv cmake-3.27.7-linux-x86_64/* ~/opt/
#Download and install googletest (needed for proj9)
git clone https://github.com/google/googletest.git ~/opt/src/googletest/
git checkout remotes/origin/v1.14.x
cd $HOME/opt/src/googletest/
mkdir -p build
cd build
cmake .. -DCMAKE_CXX_COMPILER=$PREFIX/bin/g++ \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=$PREFIX
make
make install
#Download and install sqlite3 (needed for proj9)
cd $PREFIX/src
wget https://www.sqlite.org/2023/sqlite-autoconf-3440000.tar.gz
tar xzf sqlite-autoconf-3440000.tar.gz
cd sqlite-autoconf-3440000
./configure --prefix=$PREFIX
make
make install
make distclean
#Download and install proj9
cd $PREFIX/src
wget https://download.osgeo.org/proj/proj-9.2.1.tar.gz
tar xvf proj-9.2.1.tar.gz
cd $PREFIX/src/proj-9.2.1
mkdir -p build
cd build
cmake .. -DSQLITE3_INCLUDE_DIR=$PREFIX/include \
-DSQLITE3_LIBRARY=$PREFIX/lib/libsqlite3.so \
-DCMAKE_INSTALL_RPATH=$PREFIX/lib \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_C_COMPILER=$PREFIX/bin/gcc \
-DCMAKE_CXX_COMPILER=$PREFIX/bin/g++ \
-DCMAKE_AR=$PREFIX/bin/ar
cmake --build .
cmake --build . --target install
#Download and install json-c-0.17 (without doxygen)
cd $PREFIX/src
git clone https://github.com/json-c/json-c.git
mkdir json-c-build
cd json-c-build
cmake ../json-c -DCMAKE_INSTALL_PREFIX=$PREFIX
make -j9
make test
make install
#Download and install geos 3.10.5 (version 3.11 is supported but not
#recommended https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS)
#(Without doxygen!!!)
cd $PREFIX/src
wget http://download.osgeo.org/geos/geos-3.10.5.tar.bz2
tar xvf geos-3.10.5.tar.bz2
cd geos-3.10.5
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_C_COMPILER=$PREFIX/bin/gcc \
-DCMAKE_CXX_COMPILER=$PREFIX/bin/g++ \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_INSTALL_RPATH=$PREFIX/lib64
make -j9
ctest
make install
#Download and install gdal 3.6.4
cd $PREFIX/src
wget http://download.osgeo.org/gdal/3.6.4/gdal-3.6.4.tar.gz
tar xvf gdal-3.6.4.tar.gz
cd gdal-3.6.4
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=$PREFIX/bin/gcc \
-DCMAKE_CXX_COMPILER=$PREFIX/bin/g++ \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DSQLite3_INCLUDE_DIR=$PREFIX/include \
-DSQLite3_LIBRARY=$PREFIX/lib/libsqlite3.so \
-DSQLITE3EXT_INCLUDE_DIR=$PREFIX/include \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_INSTALL_RPATH=$PREFIX/lib64
cmake --build . -j8
cmake --build . --target install
Can somebody help me with this please.