在一台全新的Windows上编译GDAL

编写本文的目的

主要是分享自己在手动编译gdal过程中遇到的问题,供想自己折腾和不想在windows上安装conda的群体参考

从零开始编译(试错)

  1. 编译环境:msvc+cmake

  2. 下载gdal源码
    https://github.com/OSGeo/gdal/releases/download/v3.9.2/gdal-3.9.2.tar.gz

解压gdal的源码,进入文件夹,在命令行中输入

cmake --build your/cmake/build/path --target GDAL --config Debug

--config Debug是可选的

不出意外的话,你应该会收到缺少PROJ库的提示

接下来让我们再下载PROJ库
https://proj.org/en/9.5/download.html

打开以后,同样用cmake进行编译

cmake --build your/cmake/build/path --target proj --config Debug

接下来,你会收到缺少tiff库的提示

重复上面的步骤,最后你会发现,tiff又依赖于sqlite库

我们再下载sqlite库的源码,这个时候你发现,sqlite库是如此的朴实无华,仅仅只有五个文件,也没有什么其他的依赖关系,终于可以长舒一口气了

好了,这下我们可以安心编译了

编译SQLite库

为了省时省力,我们采用轮椅一点的方式,打开Visual Studio,新建空项目,将SQLite的文件按照图示的方式复制过来

pre1

随后,项目的配置类型改为静态库;在配置属性中C/C++项目的预处理器定义改为:

_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY

并且在sqlite3.def的末尾加上sqlite3_unlock_notify

最后,在链接器-输入-模块定义文件中修改为sqlite3.def

最后CTRL+B生成.lib文件,整理.lib文件(如果有.pdb和.idb文件要一并带上)和头文件,放在你想要的目录下

编译CURL库

当SQLite库编译完后,你可能认为万事大吉了,但实际上,proj库还有对curl库的要求,您还需要编译curl库

我们正常地下载curl的源码,换一个轮椅,采用对cmake支持比较好的CLion打开文件夹

然后,build curl项即可

对于其中的预警信息,比如Perl和libpsl找不到都可以忽略,即使不存在相应环境也可以正常编译

你可能在CLion中找不到install项,没关系,复制指令,在自己的命令行中执行,把–target后面的项改为install即可,随后便可以依据提示信息找到.lib、.pdb、.dll文件

编译TIFF、PROJ、GDAL库

如法炮制,编译tiff时,记得在CLion中配置cmake属性(-DSQLite_INCLUDE_DIR -DSQLite_LIBRARY)

同样地,编译PROJ时需要提供TIFF_INCLUDE_DIR TIFF_LIBRARY CURL_INCLUDE_DIR CURL_LIBRARY

这里需要注意的是,编译PROJ库时,可能会有相当多的警告信息,没事,这些都是缺少部分依赖库(或者换个说法,扩展库)的表现,依据提示信息不管或者自己再手动编译所需要的库即可

最后,编译gdal库就编译成功了

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装