☰
CMake编译gdal3.5.3
2026/10/21 4:28:55 网站建设 项目流程

目录

1 配置

1.1 Release版

1.2 Debug版(带asan)

2 编译

3 安装


平台:中标麒麟

gcc:4.9.3

前文已经通过cmake编译了PROJ库,并安装在/opt/PROJ路径下,下面介绍CMake源码编译安装gdal3.5.3

1 配置

配置这一步决定了编译的版本是debug 版还是release版。假如编译的是debug版,你还可以决定是否关联asan以监视内存的泄露情况。这里我们分两种情况介绍release与debug(带asan)

1.1 Release版

cmake -B build -DCMAKE_PREFIX_PATH="/opt/PROJ" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/opt/gdal"

gdal依赖于PROJ,具体说来,依赖PROJ的头文件和库文件。所以你在编译gdal时,要告诉gdalPROJ的头文件和库文件的位置。cmake提供了便利的XXXConfig.cmake文件,里面索引了XXX模块的库路径和头文件路径。如果你使用cmake编译PROJ和gdal,你只需要在配置阶段告知cmake,被依赖模块,在这里也就是PROJ的安装路径即可。cmake自己有一套规则去寻找安装路径下的XXXConfig.cmake文件。

在这里,PROJ的.cmake文件如下:

所以在配置时,通过-DCMAKE_PREFIX_PATH="/opt/PROJ"选项指定PROJ安装路径即可。

1.2 Debug版(带asan)

cmake -B build -DCMAKE_PREFIX_PATH="/opt/PROJ" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="/opt/gdal" -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DCMAKE_C_FLAGS="-fsanitize=address -fno-omit-frame-pointer" -DCMAKE_CXX_FLAGS="-fsanitize=address -fno-omit-frame-pointer" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=address"

这里,因为我仅仅需要gdal作为一个依赖库,所以只需要把asan加入到proj的共享库里,所以这里使用了-DBUILD_SHARED_LIBS=ON和-DCMAKE_SHARED_LINKER_FLAGS="...."选项。

后面的操作对于release和debug都是一样的。

2 编译

这一步利用上一步生成的makefile来执行make

cmake --build build

3 安装

sudo cmake --build build --target install

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询