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库 欢迎大家持续关注。

浙公网安备 33010602011771号