CentOS7编译GDAL遇sqlite3_column_table_name未定义引用问题求助
解决GDAL 3.2.0编译时
sqlite3_column_origin_name/sqlite3_column_table_name未定义引用问题 1. 修复SQLite3编译参数并重新编译
你原CFLAGS参数里存在错误:-SQLITE_ENABLE_COLUMN_METADATA=1多了一个减号,属于无效配置,且重复定义了宏。正确的编译方式是直接用sqlite自带的配置项:
- 下载SQLite 3.30及以上版本的源码(GDAL 3.2.0对sqlite版本有要求)
- 解压后进入源码目录,执行:
./configure --prefix=/usr/local/sqlite3 --enable-column-metadata make -j$(nproc) make install--enable-column-metadata会自动开启SQLITE_ENABLE_COLUMN_METADATA宏,无需手动添加CFLAGS,避免参数错误。
2. 配置环境变量让GDAL优先链接新SQLite
编译GDAL前,必须让系统优先找到新编译的sqlite库和头文件,执行以下命令:
export PKG_CONFIG_PATH=/usr/local/sqlite3/lib/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH export CFLAGS="-I/usr/local/sqlite3/include $CFLAGS" export LDFLAGS="-L/usr/local/sqlite3/lib -lsqlite3 $LDFLAGS"
3. 重新配置并编译GDAL
进入GDAL源码目录,重新执行configure(替换为你的geos、proj实际安装路径):
./configure --prefix=/usr/local/gdal320 --with-geos=/usr/local/geos380/bin/geos-config --with-proj=/usr/local/proj720
配置完成后,检查输出日志,确认以下内容存在:
SQLite support: yes
SQLite library version: 3.xx.x
SQLite enable column metadata: yes
确认无误后,执行编译安装:
make -j$(nproc) make install
内容的提问来源于stack exchange,提问作者monkey
相关产品推荐
相关产品推荐

