麒麟环境下编译GDAL

麒麟环境下编译GDAL

前言

本文说明如何在Kylin 4.0.2操作系统下从源代码码编译GDAL 3.4.0。GDAL依赖了proj, tiff, sqlite3等开源代码,由于要跟系统中其它使用GDAL的软件保证兼容性,因此不得已使用和它们相同的版本的源码进行编译。分别是

  1. gdal-3.4.0.tar.gz
  2. proj-8.2.1.tar.gz
  3. tiff-4.2.0.tar.gz
  4. sqlite3- version 3.37.0及以上版本(下载方法后面说明)

任务目标

  1. 编译sqlite3
  2. 编译tiff-4.2.0
  3. 编译proj-8.2.1
  4. 编译gdal-3.4.0
  5. 使用java编写将shp转换为geojson的测试程序。

开发环境

麒麟系统版本: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,则需要专门写一个小节来说明。见下文。

下载sqlite3

通常到sqlite官网下载,到写稿时,官网上最新版本为sqlite-autoconf-3390200.tar.gz
如果想要下载某个特定的历史版本,可以参考这篇博客:SQLite下载历史版本。

编译

为了简明,下文都假设代码都已经下载到了/home/user/build_gdal目录下了,分别是

  1. sqlite-autoconf-3370000.tar.gz
  2. tiff-4.2.0.tar.gz
  3. proj-8.2.1.tar.gz
  4. gdal-3.4.0.tar.gz

编译sqlite3

解压缩的命令如下,其它文件的解压缩方法相同。

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

下面的几条命令的作用是解压,进入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

编译proj-8.2.1

操作步骤和前面的一样:


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命令,就能成功。

编译gdal-3.4.0

配置必要的环境变量

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使得上面的环境变量配置生效。

编译gdal动态库

在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
编译gdal java

我们离成功最后的目标已经很近了,这一步需要准备一个工具,叫swig。本文采取源码安装的方式。

  1. 下载swig-4.0.2.tar.gz。
  2. 安装pcre
sudo apt-get install libpcre3-dev
  1. "四步法"编译swig-4.0.2
tar -zxvf swig-4.0.2.tar.gz
cd swig-4.0.2
sudo ./configure
sudo make
sudo make install
  1. 修改java.opt
    java.opt位于gdal-3.4.0/swig/java目录下,使用sudo vi java.opt打开,然后编辑JAVA_HOME的值为/usr/lib/jvm/java-8-openjdk-amd64 保存即可。
  2. 执行最后的编译
cd gdal-3.4.0/swig/java
sudo make 
sudo make install

你可能感兴趣的:(c++,java)