一、编译步骤

解压下载的GDAL源程序,并在命令行中切换到解压目录。

tar -xzvf gdal-2.1.3.tar.gz
cd gdal-2.1.3

GDAL可通过configure来实现一些自定义配置,可通过./configure –h命令来查看。--prefix=path表示设置GDAL的make install后的build目录,里面有生成的头文件和动态库。输入如下命令:

./configure --prefix=/root/Test/gdalbuild

这时可以发现目录中新生成了GDALmake.opt文件,该文件被包含在GNUmakefile中进行编译。输入命令:

make
make install

编译完成后,生成的动态库文件就在设置的目录下。Include目录下存放着头文件,lib目录存放动态库文件,bin目录存放可执行文件如gdalinfo。

二、注意说明

1)注意这里是生成在自己设置目录而不是默认目录下,调用的时候需要设置环境变量或者拷贝到系统的lib目录,或者不用设置—prefix参数编译。

2)configure命令还可以用来设置debug版本或者release版本,只需要在后面添加--enable-debug参数就可以控制。默认情况下是关闭的。

--enable-debug          enable debugging (disabled by default)

但我发现GDAL这个说明似乎有问题。我分别编译了带这个参数和不带这个参数两个版本:

带参数--enable-debug:



不带参数--enable-debug:



可以看到按照说明的release版本反而比debug版本体积大。一般而言,release版本总比debug版本信息小一点,而按照这篇文章《Linux下查看.so和可执行文件是否debug编译》进行检查是否debug编译,发现两者都是存在debug信息的,release版本比debug版本debug信息少一条:



这样到底哪个是debug版本反而弄不清楚了,只有留待以后研究了。

Linux环境g++编译GDAL动态库的更多相关文章

  1. Linux环境g++编译TinyXML动态库

    除了CMarkup,tinyxml也是C/C++下解析XML很好的工具.在linux下用g++编译tinyxml的步骤如下(tinyxml版本2.6.2): 进入tinyxml解压目录,用文本编辑器打 ...

  2. 在linux环境下编译android so库

    (1) 配置Android NDK环境 (2) mk文件编写 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # OpenCV OPENCV_CA ...

  3. Linux下gcc编译控制动态库导出函数小结

    根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility(" ...

  4. [转]Linux下g++编译与使用静态库(.a)和动态库(.os) (+修正与解释)

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库 ...

  5. ffmpeg学习笔记-Linux下编译Android动态库

    Android平台要使用ffmpeg就需要编译生成动态库,这里采用Ubuntu编译Android动态库 文件准备 要编译生成Android需要以下文件 NDK ffmpeg源代码 NDK下载 NDK可 ...

  6. Linux Debugging(六): 动态库注入、ltrace、strace、Valgrind

    实际上,Linux的调试方法非常多,针对不同的问题,不同的场景,不同的应用,都有不同的方法.很难去概括.本篇文章主要涉及本专栏还没有涵盖,但是的确有很重要的方法.本文主要包括动态库注入调试:使用ltr ...

  7. linux 给运行程序指定动态库路径

    1. 连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/li ...

  8. windows android studio 编译Jni动态库

    项目需要,折腾了半天搞定windows android studio环境编译Jni动态库,现记录下来. 准备安装环境: 1. android studio 下载地址是http://www.androi ...

  9. 如何让linux加载当前目录的动态库

    debian从7.0开始支持multiarch,64位库的路径改到/usr/lib/x86_64-linux-gnu了,mint.ubuntu这些衍生版有没有跟着改我就不清楚了. deepin lin ...

随机推荐

  1. Spark处理日志文件常见操作

    spark有自己的集群计算技术,扩展了hadoop mr模型用于高效计算,包括交互式查询和 流计算.主要的特性就是内存的集群计算提升计算速度.在实际运用过程中也当然少不了对一些数据集的操作.下面将通过 ...

  2. 云计算+SaaS+业务开发平台=JSAAS云平台

    我关注Google的代码托管.Open API,我也关注Oracle会把MYSQL怎么样云数据库化,我也虚拟化技术多实例化独立的数据库,我也关注facebook的平台插件应用架构,我也关注salesf ...

  3. jquery之each遍历list列表

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现

    因为我们的业务需要,最近一直在搞动态动过java程序实现为用户任务绑定监听程序.碰了很多壁,查看了API文档,最后终于在找到解决办法,所以贴出来,希望能够留个底,也能帮助有需要的人. -------- ...

  5. .net md5

    今天试着写了一下MD5加密,网站注册登录估计都用到MD5,今天就把写的贴出来 public string GetMd5(string user) { using (MD5 md5 = MD5.Crea ...

  6. phpcms 笔记

      首先是要把首页分为三个部分  : 导航部分 .尾部和首页中间部分  用了三个不同的文件 header.html ; index.html; footer.html   在使用phpcms之前 首先 ...

  7. 跟着刚哥梳理java知识点——异常(十一)

    异常:将程序执行中发生的不正常情况(当执行一个程序时,如果出现异常,那么异常之后的代码就不在执行.) java.lang.Throwable:异常的超类 1.Error:java虚拟机无法解决的严重问 ...

  8. EasyMvc--让MVC区域开发更Easy(提供源码下载)

    核心: 主要利用MVC的区域功能,实现项目模块独立开发和调试. 目标: 各个模块以独立MVC应用程序存在,即模块可独立开发和调试. 动态注册各个模块路由. 一:新建解决方案目录结构 如图: 二:Eas ...

  9. 串口屏与触摸屏人机界面组态软件HMIMaker介绍

    串口屏与触摸屏人机界面组态软件HMIMaker介绍 触摸屏人机界面组态软件HMIMaker,是一款基于ARM架构的嵌入式控制系统开发的嵌入式软件,专业应用于触摸屏的二级界面开发,具有单片机协议,mod ...

  10. Java--向数据库添加txt文件中的批量数据

    大家可能会遇到这样的问题,在做一个项目时需要操作数据库,需要有大量的数据需要导入到数据库中,这部分数据存到了txt文档中(可以把Word文档中的数据弄到txt文档),总不能每一条数据都复制黏贴到数据库 ...