如何用MinGW、MSYS2编译C++版GDAL 3.2.3并配置PROJ、SQLite
MinGW编译GDAL 3.2.3引入PROJ和SQLite的解决方法
首先明确:VS+MSVC依赖的nmake.opt配置方式不适用于MinGW环境,MinGW下需通过./configure脚本传递参数来指定依赖库路径,具体操作如下:
1. 先确保PROJ和SQLite编译安装完成
- 编译SQLite:将其编译为静态或动态库,安装到自定义路径(如
/usr/local/sqlite),确保路径下存在include/sqlite3.h头文件,以及lib/libsqlite3.a或libsqlite3.dll.a库文件 - 编译PROJ:同样安装到自定义路径(如
/usr/local/proj),确认include/proj.h头文件、lib/libproj.a等库文件存在
2. 给GDAL的./configure传递依赖参数
执行./configure时,需明确指定PROJ和SQLite的安装根目录,示例命令:
./configure --prefix=/usr/local/gdal \ --with-proj=/usr/local/proj \ --with-sqlite3=/usr/local/sqlite
--prefix:指定GDAL最终的安装路径--with-proj:指定PROJ的安装根目录,脚本会自动识别该目录下的include和lib子目录--with-sqlite3:指定SQLite的安装根目录,逻辑同上
如果依赖库未安装到标准路径,也可手动指定头文件和库路径:
./configure --prefix=/usr/local/gdal \ CPPFLAGS="-I/usr/local/proj/include -I/usr/local/sqlite/include" \ LDFLAGS="-L/usr/local/proj/lib -L/usr/local/sqlite/lib" \ --with-proj \ --with-sqlite3
3. 验证配置结果
执行./configure后,查看输出日志,确认出现以下类似内容:
checking for PROJ... yes
checking for sqlite3.h... yes
无报错则说明依赖库已被正确识别,后续执行make和make install即可完成编译安装。
常见问题排查
- 若仍提示找不到库,检查依赖库的安装路径是否正确,确认头文件和库文件存在
- 使用动态库时,可临时设置环境变量让系统找到库文件:
export LD_LIBRARY_PATH=/usr/local/proj/lib:/usr/local/sqlite/lib:$LD_LIBRARY_PATH
内容的提问来源于stack exchange,提问作者ilnaug
相关产品推荐
相关产品推荐

