麒麟环境下编译GDAL
本文说明如何在Kylin 4.0.2操作系统下从源代码码编译GDAL 3.4.0。GDAL依赖了proj, tiff, sqlite3等开源代码,由于要跟系统中其它使用GDAL的软件保证兼容性,因此不得已使用和它们相同的版本的源码进行编译。分别是
麒麟系统版本:kylin 4.0.2
gcc版本:gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6kord1~16.04.12)
jdk版本:openjdk version “1.8.0_265”
下载gdal-3.3.0, proj-8.2.1,tiff-4.2.0,直接按照前面的链接去下载相应文件即可。对于sqlite3,则需要专门写一个小节来说明。见下文。
通常到sqlite官网下载,到写稿时,官网上最新版本为sqlite-autoconf-3390200.tar.gz
如果想要下载某个特定的历史版本,可以参考这篇博客:SQLite下载历史版本。
为了简明,下文都假设代码都已经下载到了/home/user/build_gdal目录下了,分别是
解压缩的命令如下,其它文件的解压缩方法相同。
tar -zxvf sqlite-autoconf-3370000.tar.gz
进入sqlite-autoconf-3370000目录,并执行configure命令,注意后面的–prefix参数,它的作用是当执行make install时,会将编译得到的头文件、二进制可执行文件、动态库文件分别安装到prefix参数指定的目录中。
sudo ./configure --prefix=/usr/local/gdal_deps
然后执行以下命令:
sudo make
sudo make install
下面的几条命令的作用是解压,进入tiff-4.2.0目录,执行configure,构建,安装:
tar -zxvf tiff-4.2.0.tar.gz
cd tiff-4.2.0
sudo ./configure --prefix=/usr/local/gdal_deps
sudo make
sudo make install
操作步骤和前面的一样:
tar -zxvf proj-8.2.1.tar.gz
cd proj-8.2.1
sudo ./configure SQLITE3_CFLAGS="-I/usr/local/gdal_deps/include" SQLITE3_LIBS="-L/usr/local/gdal_deps/lib -lsqlite3" TIFF_CFLAGS="-I/usr/local/gdal_deps/include" TIFF_LIBS="-L/usr/local/gdal_deps/lib -ltiff" --without-curl --prefix=/usr/local/gdal_deps
sudo make
sudo make install
由于后续构建proj.db时需要调用sqlite3,因此需要在configure阶段确认是否可以正确调用sqlite3命令。
如果在configure这一步提示错误:configure: error: Please install sqlite3 binary.,则只需执行下面的命令:
sudo cp /usr/local/gdal_deps/bin/sqlite3 /usr/local/bin/
目的是为了将sqlite3拷贝到系统默认的加载命令的目录下,再次执行上述的configure命令,就能成功。
sudo vi /etc/profile
在/etc/profile中添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export CPATH=$CPATH:$JAVA_HOME/include:$JAVA_HOME/include/linux
export C_INCLUDE_PATH=$C_INCLUDE_PATH:$JAVA_HOME/include:$JAVA_HOME/include/linux
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$JAVA_HOME/include:$JAVA_HOME/include/linux
然后执行source /etc/profile
使得上面的环境变量配置生效。
在shell窗口依次执行下面的命令:
tar -zxvf gdal-3.4.0.tar.gz
cd gdal-3.4.0
sudo ./configure --with-proj=/usr/local/gdal_deps --prefix=/usr/local/gdal_deps
sudo make
sudo make install
我们离成功最后的目标已经很近了,这一步需要准备一个工具,叫swig。本文采取源码安装的方式。
sudo apt-get install libpcre3-dev
tar -zxvf swig-4.0.2.tar.gz
cd swig-4.0.2
sudo ./configure
sudo make
sudo make install
sudo vi java.opt
打开,然后编辑JAVA_HOME的值为/usr/lib/jvm/java-8-openjdk-amd64
保存即可。cd gdal-3.4.0/swig/java
sudo make
sudo make install