首先写三个源代码文件,分别是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库的步骤。

最新文章

  1. 【转载】Unity 优雅地管理资源,减少占用内存,优化游戏
  2. 【iCore3 双核心板_FPGA】实验二十三:使用JTAG UART终端打印信息
  3. win7锁定到任务栏的路径在哪里
  4. VBA读取固定文件夹中txt内容
  5. Keil 4.0 生成bin文件
  6. HDOJ-三部曲一(搜索、数学)-1008-Prime Path
  7. (C/C++) 算法,编程题
  8. 来自Google产品管理和营销高级副总裁Jonathan Rosenberg的42条军规(转)
  9. 7zip 命令行
  10. Solr4.8.0源码分析(13)之LuceneCore的索引修复
  11. 【转】prufer编码
  12. windows server 2008 设置多用户同时远程登录
  13. 【QT相关】QT+opencv环境配置
  14. BZOJ 1592: [Usaco2008 Feb]Making the Grade 路面修整( dp )
  15. myeclipse中间classpath
  16. Android 4.0 ICS SystemUI浅析——StatusBar结构分析
  17. JS操作字符串常用的方法
  18. javascript高性能写法
  19. 题解-POI2014 Supercomputer
  20. [python] python django web 开发 —— 15分钟送到会用(只能送你到这了)

热门文章

  1. springMVC源码分析--ViewNameMethodReturnValueHandler返回值处理器(三)
  2. 自定义View总结2
  3. RxJava(十一)defer操作符实现代码支持链式调用
  4. Android底层开发经验
  5. Android图表库MPAndroidChart(八)——饼状图的扩展:折线饼状图
  6. iOS使用自签名证书实现HTTPS请求
  7. bmp格式图像的读写函数(对一个开源代码的封装)
  8. Cocoa层粒子发射器动画添加多个cell的一种重构
  9. [Django]bulk_create 探究
  10. 高德地图车机版API演示程序