You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu安装Geodjango后运行报错:libgdal.so.20缺失sqlite3符号

解决GDAL undefined symbol: sqlite3_column_table_name 错误

嘿,这个问题我之前碰到过类似的,核心原因就是GDAL库依赖的SQLite版本和你系统当前用的SQLite版本不兼容。sqlite3_column_table_name 这个函数是SQLite 3.16.0及以上版本才有的,如果你的系统SQLite版本低于这个,或者GDAL编译时用的是带这个函数的SQLite,但运行时加载了系统旧版本的,就会出这个错。

下面给你几个一步步解决的办法:

第一步:先查下系统的SQLite版本

先打开终端,跑个命令确认当前SQLite版本:

sqlite3 --version

如果输出的版本号低于3.16.0,那这就是问题的根源了,得先升级SQLite。

第二步:升级SQLite(如果版本不够)

Ubuntu旧版本默认的SQLite版本确实比较低,你可以通过第三方PPA来升级:

  1. 先添加PPA源:
sudo add-apt-repository ppa:jonathonf/sqlite3
sudo apt-get update
  1. 然后安装更新后的SQLite:
sudo apt-get install sqlite3 libsqlite3-dev

装完再跑一遍sqlite3 --version确认下,确保版本到3.16.0以上了。

第三步:让GDAL链接到新的SQLite库

要是升级后还是报错,可能是GDAL没找到新的SQLite库。先看看GDAL现在链接的是哪个SQLite:

ldd /usr/lib/libgdal.so.20 | grep sqlite

如果输出的是旧版本的路径,那可以临时设置环境变量让GDAL优先加载新库试试:

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6  # 这里替换成你实际的新SQLite库路径,可从ldd输出里找新的

然后再运行你的Django程序,要是没问题了,就把这个环境变量加到~/.bashrc或者你启动Django的脚本里,避免每次都手动输。

第四步:手动编译GDAL(前面方法都不行的话)

如果系统包管理的GDAL和SQLite实在不兼容,那就自己编译GDAL,指定用新的SQLite:

  1. 先装编译需要的依赖:
sudo apt-get install build-essential libproj-dev libgeos-dev libsqlite3-dev
  1. 下载和你当前GDAL版本匹配的源码(libgdal.so.20对应GDAL 2.4系列,比如2.4.4):
wget https://download.osgeo.org/gdal/2.4.4/gdal-2.4.4.tar.gz
tar xzf gdal-2.4.4.tar.gz
cd gdal-2.4.4
  1. 配置编译选项,指定SQLite的路径:
./configure --with-sqlite3=/usr/lib/x86_64-linux-gnu
make
sudo make install
  1. 最后更新系统库缓存:
sudo ldconfig

额外提醒

你用的Python 2.7和Django 1.11都是比较旧的版本,要注意所有依赖的版本兼容性。PostGIS 2.0.3搭配GDAL 2.4是没问题的,但编译的时候一定要确保依赖路径都对。另外如果你之前是用apt装的GDAL,最好先卸载旧版本:sudo apt-get remove libgdal-dev libgdal20,再重新弄。

内容的提问来源于stack exchange,提问作者Prashanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:29:15