一、准备工作

从官网下载GDAL、PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示。下载地址请自行Google。注:使用的系统是CentOS6.4 X64版本,其他的Linux系统都是一样的。

接下来检查系统中是否安装了开发环境和编译环境,在终端输入gcc、g++、make回车,如果提示命令不存在,就说明系统没有安装编译环境,请先安装编译环境,下面的内容都是在安装编译环境之后才能进行。为了后续安装,可能需要root权限,所以首先打开终端,并使用su命令切换到root用户。

二、编译GDAL及其依赖库

下面的内容主要为编译GDAL,同时将GDAL库以来的PROJ.4和GEOS库也进行编译,详细步骤如下。由于在Linux下编译程序步骤都是一样的,所以截图就有一个就行了,有些没有截图。

1、编译PROJ.4

打开终端使用cd命令切换到PROJ.4的目录,然后依次输入下面的三个命令回车就可以完成安装。

./configure
make
make install

安装之后的文件在/usr/local下面,其中bin下面存放可执行程序,includes存放源代码,lib下存放lib库。

2、编译GEOS

打开终端使用cd命令切换到GEOS的目录,然后依次输入下面的三个命令回车就可以完成安装。

./configure
make
make install

安装之后的文件在/usr/local下面,其中bin下面存放可执行程序,includes存放源代码,lib下存放lib库。编译如下图所示。

打开/usr/local目录,使用ls命令查看文件夹中的文件,如下图所示,bin、includes和lib目录中的文件如下图所示,可以看到proj和geos的文件都被安装到该目录。

3、编译GDAL

打开终端使用cd命令切换到GDAL的目录,然后依次输入下面的三个命令回车就可以完成安装。

./configure
make
make install

输入./configure执行输出的信息中如果出现GEOSsupport: yes的字样,如下图,说明编译出来的GDAL是有GEOS库支持的,否则就没有,如下图高亮显示的部分。另外由于GDAL对PROJ4库是动态加载的,所以不需要进行特殊的修改就行,只要将PROJ的动态库和gdal的动态库放一起就好了。

安装之后的文件在/usr/local下面,其中bin下面存放可执行文件,includes存放源代码,lib下存放lib库。如果想验证GDAL是否安装成功,除了使用上面的ls和cd命令切换到/usr/local目录下查看,还可以直接在终端输入gdalinfo回车,看看会不会输出gdalinfo的帮助信息,如果输出帮助信息说明安装成功,如果提示命令不存在,说明安装不成功,如下图。

最后感叹一下,还是Linux下编译方便啊,Windows下修改一大堆,唉。最后在加一下,如果你想集成HDF之类的库的话,同样,直接下载源代码,用上面的三个命令编译安装完,然后用gdal的./configure进行配置,如果出现yes的就说明可以进行集成。

Linux下编译GDAL的更多相关文章

  1. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  2. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  3. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  4. linux下编译出现空间不足解决办法

    linux下编译出现空间不足解决办法 编译内核出现问题: AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...

  5. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  6. 如何在Kali Linux下编译Windows Exploit

    前言 微软的Windows在企业或是个人应用领域占据着最大的市场份额,在渗透测试过程中你会经常遇到很多Windows的工作站和服务器.另一方面,大多数渗透测试人员主要使用基于Linux的发行版渗透测试 ...

  7. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  8. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  9. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

随机推荐

  1. Ubuntu 16.04: How to resolve libqt5x11extras5 (>= 5.1.0) but it is not going to be installed

    Issue: When you install Virtualbox 5.1 on Ubuntu 16.04, you may encounter following error: root@XIAY ...

  2. Winform DevExpress控件库(二) 使用SplashScreenManager控件定制程序加载页面

    SplashScreenManager控件:主要作用是显示在进行耗时操作时的等待界面: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下: 在工具 ...

  3. 安卓高级3 RecyclerView结合SwipeRefreshLayout并添加上拉

    目录结构: 效果图: MainActivity.java package qianfeng.com.pullrecyclerviewdemo; import android.os.Bundle; im ...

  4. 利用LogParser将IIS日志插入到数据库

    利用LogParser将IIS日志插入到数据库 上面的博文是定制一个计划任务来将log日志定时的导入数据库      下面这篇博文是用cmd指令将日志导入到一张sql表中,是一次性操作   Log P ...

  5. python命令行参数解析模块argparse和docopt

    http://blog.csdn.net/pipisorry/article/details/53046471 还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的o ...

  6. Node.js 撸第一个Web应用

    使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同. 使用PHP/Java 来编写后台代码时,需要Apache 或者 Nginx 的HTTP 服务器,而接受请求和提 ...

  7. Android 网络图片加载之cude 框架

    偶然发现了这个框架,阿里图片加载用的这个框架.非常简单操作步骤. 1.首先下载软件包,直接搜Cube ImageLoader 这个. 2.加入jar文件 3.使用前的配置: public class ...

  8. Socket实现单客户端与服务器对话功能

    单客户端,顾名思义,就是客户端只有一个用户去访问服务器,然后服务器根据该客户请求返回信息,先看下效果图: 服务端(左)和客户端(右): 注意,我是用了两个eclipse,一个只放服务端文件,一个只放客 ...

  9. android拍照获得图片及获得图片后剪切设置到ImageView

    ok,这次的项目需要用到设置头像功能,所以做了个总结,直接进入主题吧. 先说说怎么 使用android内置的相机拍照然后获取到这张照片吧 直接上代码: Intent intentFromCapture ...

  10. 【移动开发】Service类onStartCommand()返回值和参数

    Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart ...