首先写三个源代码文件,分别是GDALTest.cpp、Fun.cpp和Fun.h,将这三个存放在一个叫GDALTest的文件夹中,然后打开终端,切换到该目录,如下图所示(注:这个图是最后截图的,所以文件夹下面有好多文件,开始应该就只有三个)。

三个文件的内容分别如下,这篇文章主要还是想试试使用automake来生成Linux下的编译脚本,所以就写了三个文件,如果想直接用gcc编译的话,直接写一个cpp就可以。本文后面主要内容其实就是如何使用automake的。

Fun.h

#ifndef FUN_H
#define FUN_H void Fun(const char* pszFile); #endif // FUN_H

Fun.cpp

#include "Fun.h"
#include "gdal.h"
#include "cpl_conv.h"
#include "cpl_string.h"
void Fun(const char* pszFile)
{
GDALAllRegister();
GDALDatasetH hDataset = GDALOpen(pszFile, GA_ReadOnly);
GDALDriverH hDriver = GDALGetDatasetDriver( hDataset );
printf( "Driver: %s/%s\n",
GDALGetDriverShortName( hDriver ),
GDALGetDriverLongName( hDriver ) );
char** papszFileList = GDALGetFileList( hDataset );
if( CSLCount(papszFileList) == 0 )
{
printf( "Files: none associated\n" );
}
else
{
printf( "Files: %s\n", papszFileList[0] );
}
CSLDestroy( papszFileList );
printf( "Size is %d, %d\n",
GDALGetRasterXSize( hDataset ),
GDALGetRasterYSize( hDataset ) );
double adfGeoTransform[6] = {0};
if( GDALGetGeoTransform( hDataset, adfGeoTransform ) == CE_None )
{
if( adfGeoTransform[2] == 0.0 && adfGeoTransform[4] == 0.0 )
{
printf( "Origin =(%.15f,%.15f)\n",
adfGeoTransform[0],adfGeoTransform[3] );
printf( "Pixel Size =(%.15f,%.15f)\n",
adfGeoTransform[1],adfGeoTransform[5] );
}
else
printf( "GeoTransform=\n"
" %.16g, %.16g, %.16g\n"
" %.16g, %.16g, %.16g\n",
adfGeoTransform[0],
adfGeoTransform[1],
adfGeoTransform[2],
adfGeoTransform[3],
adfGeoTransform[4],
adfGeoTransform[5] );
}
GDALClose(hDataset);
}

GDALTest.cpp

#include <stdio.h>
#include <Fun.h>
int main()
{
const char* pszFile = "/home/liml/Work/GDALTest/Test.img";
Fun(pszFile);
}

上面就是源代码编写完成,下面开始就是使用automake这一系列的工具生成makefile脚本文件,最后的结果就是编译的时候与编译GDAL库一样,使用./configure,make,makeinstall三步曲进行编译和安装。

输入autoscan,回车生成文件configure.scan

输入mv configure.scan configure.in,将congfigure.scan文件重命名为configure.in,如下图所示。

接下来输入vim configure.in 或geidtconfigure.in或emacs  configure.in来打开 configure.in文件进行修改。修改后的内容如下,红色字体为修改或者增加部分,截图见下图。

#                                              -*- Autoconf -*-
# Process this file with autoconf toproduce a configure script. AC_PREREQ([2.63])
AC_INIT(GDALTest,1.0, liml@21stc.com.cn)
AM_INIT_AUTOMAKE(GDALTest,1.0)
AC_CONFIG_SRCDIR([Fun.cpp])
AC_CONFIG_HEADERS([config.h]) # Checks for programs.
AC_PROG_CXX
AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, andcompiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile)

输入aclocal,生存aclocal.m4文件

接下来输入libtoolize -f -c,生成ltmain.sh文件

输入autoconf,生存configure文件

新建一个Makefile.am文件,编辑该文件源代码,头文件,库文件等。该文件修改后的内容如下,截图见下图。修改后的文件内容如下,修改完毕后保存。

AUTOMAKE_OPTIONS=foreign
INCLUDES= -I/usr/local/include
bin_PROGRAMS=GDALTest
GDALTest_SOURCES=GDALTest.cpp Fun.cpp
GDALTest_LDADD=-lgdal

保存退出后,输入autoheader,生成config.h.in

接下来输入automake –add-missing,生成makefile.in

至此,生成了使用make工具编译所需要的makefile.in文件,那么接下来的编译就和上面的编译GDAL库类似,使用./configure和make即可。详细步骤如下。

最后输入./configure,回车进行配置,如下图。然后输入make即可生成可执行文件。

接下来在终端输入 ./GDALTest回车提示如下,说gdal的库找不到。

此时在终端输入下面的命令,然后再输入./GDALTest即可,在终端中会输出图像信息

export LD_LIBRARY_PATH=/usr/local/lib

此文完毕,上面就是在Linux系统下编译和使用GDAL库的步骤。

Linux下使用GDAL进行开发(automake使用)的更多相关文章

  1. Linux下ffmpeg安装与开发配置

    Linux下ffmpeg安装与开发配置   1. ffmpeg安装 安装环境: ubuntu 12.04 (1)删除已安装的文件,避免冲突 sudo apt-get remove ffmpeg x26 ...

  2. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  3. Ubuntu Linux下如何配置Android开发环境

    下载和安装Win7系统Android开发环境中讲了怎样在Win7系统中安装Android开发环境,那么怎样在Linux系统中配置Android开发环境呢?本篇文章就将演示如何使用Eclipse.And ...

  4. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

  5. LINUX下搭建JAVA的开发环境

    LINUX下搭建JAVA的开发环境 (2009-07-13 10:04:13)     下面就将Linux下JAVA开发环境的搭建详细道来: 1.Linux下JDK的安装 至于下载JDK的二进制可执行 ...

  6. linux下的C语言开发 进程创建 延伸的几个例子

    在Linux下面,创建进程是一件十分有意思的事情.我们都知道,进程是操作系统下面享有资源的基本单位.那么,在linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了.但是,我们需要 ...

  7. linux下怎么安装Go开发环境?linux部署golang

    linux下怎么安装Go开发环境?linux部署golang  0.请自行安装SSH远程工具 1.  SSH远程登录你的linux服务器 2.   yum install mercurial安装 me ...

  8. Linux下编译GDAL

    一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...

  9. Linux下C/C++程序开发管理(makefile)

    一.引言          从我们刚开始编写一个简单的C/C++ "Hello,World!",到将其编译.运行处结果—这部分工作IDE(集成开发环境)帮我们做了,包括语法错误检查 ...

随机推荐

  1. Gradle 1.12用户指南翻译——第四十五章. 应用程序插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  2. N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.

    N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列.设计加密解密算法,且要求K<=15*N. ...

  3. Apache shiro集群实现 (八) web集群时session同步的3种方法

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  4. 使用Apache的ab进行压力测试

    概述 ab是apache自带的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab然后进行apache 负载压力测试. 后台测试开发中,常用的压力测试服务,php一般选择xampp,下 ...

  5. XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得

    关于XMPP第一篇-openfire的搭建写完后,就一直在赶本篇所要介绍的这个基于asmack+openfire的安卓客户端,费了不少精力,因为有不少同学在还在焦急的等待着(自恋了呵呵),所以紧赶慢赶 ...

  6. Dynamics CRM2011 在Visual Studio中开启Javascript的Xrm.Page智能提示

    前面一篇博文:http://blog.csdn.net/vic0228/article/details/49512699 讲到了在Visual Studio中开启xml编辑的智能提示,本篇接着来讲下如 ...

  7. mysql数据库连接池使用(二)实现自己的数据库连接池

    上一个章节,我们讲了xml文件的解析框架XMLConfiguration的使用,不懂的可以参考 Apache Commons Configuration读取xml配置具体使用. 这个章节主要实现自己的 ...

  8. ubuntu安装水星MW150US无线网卡8188eu驱动

    买了一个无线网卡插在ubuntu系统的电脑上,却不能识别出来.lsusb,可以看到下面的结果: Bus 002 Device 002: ID 0bda:8179 Realtek Semiconduct ...

  9. ROS_Kinetic_24 使用catkin_create_qt_pkg快速创建qt-ros功能包

    使用catkin_create_qt_pkg快速创建qt-ros功能包 参考网址: qt_create:http://wiki.ros.org/qt_create qt_ros:https://git ...

  10. Java正则表达式小记

    http://blog.csdn.net/pipisorry/article/details/51059500 正则表达式的一般规则都一样,见[python正则表达式] java正则表达式中的特殊字符 ...