Linux下非root权限安装与使用GDAL库的方法

学习GDAL的话推荐两个网站。

GDAL的官方文档:www.gdal.org

李民录老师的博客:http://blog.csdn.net/liminlu0314/article/category/777646

下面进入正题。

笔者的系统为RHEL4。

建议Linux的使用者习惯非root权限的操作,这是一个好习惯,在工作中会很有帮助。

首先安装GDAL依赖库PROJ.4和GEOS。

PROJ.4是提供投影坐标系相关操作的库,GEOS是提供空间分析计算相关的库。都是开源的项目,可以自行Google最新的下载地址。

由于是非root权限,所以需要自行在~/local/目录下创建proj和geos目录(最好带上版本号)。然后将当前操作目录跳转到解压缩后的PROJ.4工程的根目录,如/.../proj-4.8.0。接下来进行源码安装三部曲。

./configure --prefix=/home/users/yourname/local/proj-4.8.0 --without-jni
make
make install

配置的时候注意一定要配置安装路径,由于没有root权限,如果直接安装会失败。而安装路径就是上面创建的目录。这里笔者的机器由于如果包含jni的话编译会报错,所以在配置的时候将其去掉了。原因可能是版本或者Java配置的问题。反正我是用C++来使用GDAL。这里就要多试一试了,如果可以直接编译成功,那就不需要后面的选项了。

然后是安装GEOS,同样的步骤。

./configure --prefix=/home/users/yourname/local/geos-3.4.2
make
make install

安装完依赖库后,开始正式安装GDAL。

还是先跳转到解压后的工程根目录,然后进行三部曲。

./configure --prefix=/home/users/yourname/local/gdal-1.11.1 --with-geos=/home/users/yourname/local/geos-3.4.2/bin/geos-config
make
make install

这里解释一下,在执行完第一行语句后如果看到GEOS support: yes,则证明GDAL有了GEOS库的支持,否则GDAL库中一些功能将无法正常使用。

这里笔者的机器又出现了问题:无法编译通过。报了一个有关cpl_virtualmem.cpp的错误,通过一番查找发现系统的mremap函数的参数和这个文件中的不一致,所以手动修改源码。将cpl_virtualmem.cpp里面的宏定义(如下)注释掉即可。

#define HAVE_5ARGS_MREMAP

如果可以直接编译通过,可以无视上面的啰嗦。

这样安装的过程就基本完成,下面开始配置一些开发需要的环境。

由于GDAL对PROJ.4是动态加载的,所以要将PROJ.4的动态链接库路径加到变量LD_LIBRARY_PATH中,同时将GDAL的bin路径加到变量PATH中。

先用vim打开~/.bashrc文件,在末尾加上下面的代码。

export PATH=$PATH:/home/users/yourname/local/gdal-1.11.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/users/yourname/local/gdal-1.11.1/lib:/home/users/yourname/local/proj-4.8.0/lib

保存退出后,执行source ~/.bashrc才真正的更新了变量。

然后在命令行中输入gdalinfo回车,如果出现提示信息证明安装成功。

下面介绍一下用C++来调用GDAL库的方法。

首先,新建一个GDALTest.cpp文件,内容如下。

 1 #include "gdal.h"
 2 #include "ogrsf_frmts.h"
 3
 4 int main(int argc,char * argv[])
 5 {
 6     RegisterOGRTAB();
 7
 8     OGRSFDriverRegistrar *registrar = OGRSFDriverRegistrar::GetRegistrar();
 9     int count =registrar->GetDriverCount();
10     printf("Total: %d\n",count);
11     for(int i=0;i<count;i++){
12         printf("%s\n",registrar->GetDriver(i)->GetName());
13     }
14
15     return 0;
16 }

这段代码的意思是输出OGR驱动。

然后进行编译。

g++ GDALTest.cpp -I ./ -I /home/users/yourname/local/gdal-1.11.1/include -L/home/users/yourname/local/gdal-1.11.1/lib -lgdal -o GDALTest

最后执行./GDALTest,如果看到正常的输出则说明成功。

时间: 2024-10-21 16:02:36

Linux下非root权限安装与使用GDAL库的方法的相关文章

Linux下非root用户安装软件

下面简要说一下Linux下非root用户安装软件的一般流程:1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码.2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可3. 切换到解压后的目录,运行 ./configure.其选项可以通过 ./configure –help来获取,非root用户下最重要的应该是定义安装目录,即应该定义 ./configure –prefix=/path/to/bin, 对于一些依赖库,可能还需要使用

Linux环境下非root用户安装Python及相关库

以前在使用python的时候,都是使用root用户安装好的全局python,现在,因为root用户安装的Python版本太低,同时自己没有root权限去对全局Python升级,所以要在非root用户下安装自己指定的Python.因此,就重新整理了一份如何在Linux环境下使用非root用户安装python及其相关的库,以备不时之需. 安装python python版本库https://www.python.org/ftp/python/,此处我选择2.7.5版本的,在安装python的时候,使用

Linux下非root用户安装软件的一般流程:

1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录,运行 ./configure.其选项可以通过 ./configure –help来获取,非root用户下最重要的应该是定义安装目录,即应该定义 ./configure –prefix=/path/to/bin, 对于一些依赖库,可能还需要使用 ./configure  –prefix=xxx –wi

linux下非root用户如何修改root权限的文件

在linux下会出现把一些配置文件参数配错.root密码忘记等导致系统无法启动或进入root的窘迫境地,本文以redhat  enterprise linux server 6.4为例介绍root身份修改root权限配置文件的参数后,root无法登录,然后通过linux的rescue模式改回配置文件,巧妙以非root身份修改了root权限的文件的解决方案. 首先,插入linux安装盘重启系统,等到引导进入安装会话,上下移动方向键,选rescue installed system: 第二,进入修复

linux下非root用户的sudo问题

linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令.但是不是所有的用户都可以使用sudo命令的. 首先可能会遇到下面的提示: ××× is not in the sudoers file.  This incident will be reported. 解决办法: 1.修改/etc/sudoers 文件 #su - #chmod u+w /etc/sudoers 在 root    ALL=(ALL) 

Linux 下非root用户使用docker

Linux 下非root用户使用docker 通常我们使用linux系统的时候,最好是不要直接使用root账号,但是使用Docker的时候,默认又是不能使用非root用户的,关于原因,官方说法如下: The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can access it wi

linux在非root权限无外网(只有内网的生产环境)情况下安装nginx+mysql+php

虽然说是非root权限,但是编译php所需要的依赖包还是需要root权限的. 安装之前先保证linux有gcc和g++,因为很多东西都需要这两个库,如果没有,运行以下命令 yum install -y gcc gcc-c++ 一般linux里面都会有,如果已经存在,它会报已经存在无法安装 一.安装nginx 1. 安装nginx前,我们需要安装3个依赖包zlib.pcre.openssl(此需要root权限) yum install -y zlib pcre openssl 2. 如果上面没有无

备忘 Linux下非root用户实现crontab+rsync数据同步权限问题解决办法

如果在命令行手动执行rsync命令可以正常同步数据,但是在crontab定时任务里提示权限失败. 遇到这种情况,可以在rysnc命令里指定用ssh安全隧道方式的同时参数指定使用可以免密码登录对方机器的认证密钥文件. 1,创建一个新的密钥 ssh-keygen -t rsa 2,将密钥添加到对方主机信任中,实现免密码ssh登录 ssh-copy-id -i[密钥文件] [非root用户名]@[对方主机] 3,再在crontab里跑rsync试试 rsync -e'ssh -p22 -i[你的密钥文

以非root权限安装nginx及运行

本章主要讲如何在无root权限(包含无sudo权限)条件下于centos命令行中安装nginx以及在大于1024的端口(这里用8080)上运行. 1. 安装 两种方式,一是下载预编译好的rpm包安装,二是下载源码后自己编译. 如果是通过下载rpm方式安装,首先要找对应centos版本的rpm包. 通过命令 cat /etc/*release* 的输出可以看到centos系统的版本,在我能访问的某个云主机上显示如下: 使用curl -G <URL>命令来浏览网址http://nginx.org/