Centos7 使用源码编译java版本的gdal库

centos7下使用Java版本的GDAL库,是需要自己取编译的,这个编译过程不仅可以获取最终的gdal.jar,也可以获取所需的.so库,由于linux内核以及版本的差异性,每一个操作系统下的gdal库都可能不一样,需要自己手动编译才可以使用。好了接下来就开始编译。

一、环境准备

       本文编译的是gdal2.2.0版本,如果想要编译其它版本,可以去gdal官网下载对应的版本源码。由于gdal编译需要依赖其它三方库。

因此需要准备如下库,进行备用。  像geos-3.5.0.tar.gz、proj-4.9.3.tar.gz等都是gdal依赖的库,但是可能你在编译的时候,可能还会依赖其它库,这个跟每个人的电脑安装环境有关系,需要自己在编译的时候根据情况自行处理。

二、开始编译

首先编译安装geos,编译安装步骤

tar zxvf geos-3.5.0.tar.gz
cd geos-3.5.0
./configure
make -j8
make install

 编译过程可能会遇到如下问题:

./../../include/geos/geom/Coordinate.inl: 在成员函数‘bool geos::geom::Coordinate::equals3D(const geos::geom::Coordinate&) const’中:
../../../include/geos/geom/Coordinate.inl:77:28: 错误:‘ISNAN’在此作用域中尚未声明
   ((z == other.z)||(ISNAN(z) && ISNAN(other.z)));

解决方案:

 修改geos目录下include/config.h 文件,将下面选中的配置放开。

 

 编译proj,编译步骤

tar zxvf proj-4.9.3.tar.gz
cd proj-4.9.3
./configure
make -j8
make install

最后编译gdal

 

三、生成java版本的gdal库

配置Java环境,确保环境变量中配置的jdk和开发环境实际用的jdk一致,这样子最终出来的jar和.so库才能匹配使用。

一般linux环境都会自带openjdk,我们先配置自己的jdk环境,使用vim /etc/profile   打开文件后,在最下面增加

 

 保存后,执行  source /etc/profile 。

不要以为这个时候就可以了,我们通过java -version 查看,发现实际还是使用的是open jdk,所以需要将jdk的执行目录切换为我们自己配置的

使用如下命令:

设置优先级:   alternatives --install /usr/bin/java java /home/ly/3rd/jdk1.8.0_171/bin/java 3

设置jdk:    alternatives --config java     选择自己配置的序号  

好了jdk算是配置成功了。

接下来配置ant  因为Java版本的gdal的依赖是基于ant的,所以ant需要配置到环境变量中。

使用vim /etc/profile   打开文件后,在最下面增加

 保存后,执行  source /etc/profile 。

 然后cd 到gdal的文件夹下的swig/java中,修改其中的java.opt文件,将其中的java_home修改为你自己实际的jdk目录

 

然后我们在当前目录下执行  make 命令后  发现报如下错误:

bin/sh: swig: 未找到命令

这个时候我们还需要再安装swig,当然源码和库安装都可以,我们使用源码编译,编译步骤

tar -zxvf swig-3.0.12.tar.gz 
cd swig-3.0.12/
./configure --without-pcre
make -j8
make install

执行完后再次到gdal/swig/java 目录下执行make 命令,此时发现执行成功

成功后,我们在当前目录下,就可以找到我们编译好的gdal对应的Java库了。

上面标红的就是我们要使用的gdal.jar  以及需要的动态库。

 好了今天的编译就到这里,后续小编会持续编译不同操作系统,不同版本的gdal  Java库   欢迎大家持续关注。

posted @ 2022-02-21 17:30  开放GIS  阅读(1097)  评论(0)    收藏  举报