添加了新图书馆,旧图书馆闲逛

use*_*227 7 libraries

在 ubuntu 12.04 中,我将地理空间库的源代码 gdal-1.11.0 下载到 ~/src 中,配置并成功编译,看起来。新文件,例如libgdal.agot 放入 /usr/local/lib。

但是,当我运行依赖于它的程序时,

$ ogrinfo --formats
Run Code Online (Sandbox Code Playgroud)

我得到

ERROR 1: ogrinfo was compiled against GDAL 1.11 but current library version is 1.10
Run Code Online (Sandbox Code Playgroud)

看来我还没有删除旧版本的 GDAL。我该怎么做?

关于我的系统的一些信息:

$ uname -a
Linux ubuntu 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

Ant*_*hon 6

libgdal.a只有在ogrinfo不使用共享库的情况下链接文件时才会使用该文件。如果ogrinfo以这种方式链接(不使用共享库),则不会出现错误,因为库(1.11 版)将是可执行文件的一部分。

你应该尝试的是运行

sudo ldconfig
Run Code Online (Sandbox Code Playgroud)

编译安装新版本后gdal,应该通知系统(其中1.10版本已作为共享库加载),新版本可用。


Fah*_*tha 3

看来我还没有删除旧版本的GDAL。我该怎么做呢?

如果您保留了源代码,那么尝试make uninstall是一个合理的选择,如果您正在进行本地安装,这是一个很好的做法。

一种简单的替代方法是删除与该库相关的所有文件(新旧文件),然后重新安装新文件。

然而,我想知道为什么当软件包在 Debian 上可用(因此在 Ubuntu 上可用)时您还要从源代码安装。如果您使用的是较旧版本的 Ubuntu,并且没有合适的 PPA,请注意,从较新版本的 Ubuntu向后移植是可能的,而且大多数时候并不困难。

Debian 中列出的 GDAL 1.11 构建依赖项是

构建依赖:debhelper (>= 9)、dh-autoreconf、zlib1g-dev、libnetcdf-dev (>= 1:4.0.0)、netcdf-bin、libjasper-dev、libpng-dev、libjpeg-dev、libgif- dev、libwebp-dev、libhdf4-alt-dev [!ppc64]、libhdf5-dev (>= 1.8.8)、libpcre3-dev、libpq-dev、libxerces-c-dev、unixodbc-dev (>= 2.2.11 )、doxygen、d-shlibs、libgeos-dev、libmysqlclient-dev、dh-python、python-all-dev(>= 2.6.6-3~)、python-numpy、python3-all-dev、python3-numpy、 libcurl4-gnutls-dev | libcurl4-gnutls-dev | libcurl-ssl-dev、libsqlite3-dev、libogdi3.2-dev、chrpath、swig、补丁、libexpat1-dev、libproj-dev、libdap-dev、libxml2-dev、libspatialite-dev (>= 2.4.0~rc2- 4)、libepsilon-dev (>= 0.9.1-1~)、libpoppler-private-dev、liblzma-dev、libopenjpeg-dev、libarmadillo-dev、libfreexl-dev (>= 1.0.0)、libkml-dev ( >= 1.3.0~)、liburiparser-dev、默认 jdk、ant

看起来还不错。需要明确的是,这里的想法是在您的版本上重建 Debian/Ubuntu 源。如果您需要提示或更多详细信息,我可以详细说明。

以下是 Debian 中可用的 GDAL 版本。

$ apt-cache policy libgdal1-dev
libgdal1-dev:
  Installed: (none)
  Candidate: 1.9.0-3.1
  Version table:
     1.11.0+dfsg1-1~exp2 0
          1 http://debian.lcs.mit.edu/debian/ experimental/main amd64 Packages
     1.10.1+dfsg-6 0
         50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
         50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
     1.9.0-3.1 0
        500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
     1.6.3-4+b1 0
        500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)

  • 好的。我采纳了您最简单的建议,即“删除与该库相关的所有文件,然后重新安装”。所以我成功运行了这些命令,消除了错误:首先,`$ sudo apt-get remove python-gdal python3-gdal libgdal1h libgdal1-dev libgdal-perl libgdal-java libgdal-doc libgdal-dev gdal-bin`然后`$ gdal-1.11.0 源代码的 sudo make install` 和 $ sudo ldconfig` 随后 `$ ogrinfo --formats` 没有产生错误。至于我必须删除的较长的软件包列表,我在 https://packages.debian.org/source/sid/gdal 中找到了它们 (2认同)