一、ecCodes库编译
ecCodes 是由 ECMWF 开发的一个库,它提供了一个应用程序编程接口和一组工具,用于对以下三种格式的数据进行解码和编码:
1)WMO FM-92 GRIB 第 1 版和第 2 版
2)WMO FM-94 BUFR 第 3 版和第 4 版
3)WMO GTS 缩写报头(仅解码)
提供C、Fortran 90 和 Python 接口对ecCodes 功能的访问,ecCodes源码可在下面链接进行访问:
GitHub - ecmwf/eccodes: ECMWF's GRIB and BUFR encoding/decoding library
具体编译过程上面网址中也有具体介绍,这里主要说编译过程中会遇到的问题以及解决办法:
1)在使用以下指令进行编译
cmake ../eccodes-x.y.z-Source -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes
显示报错,报错类型:缺少AEC库,如下图
这种错误的解决办法是安装编译一个对应的AEC库 ,由于这个库比较不容易找到,大家可关注微信公众号GIS攻略回复AEC获取。
下载解压AEC库与ecCodes解压文件在同一个目录下,然后进行解译,解译完成重新编译上一步指令即可。
2)报错类型:
No CAME_FORTRAN_COMPILER could be found
缺少Fortran编译器对fortran语言进行识别,如下图:
这种错误出现原因是没有fortran编译器识别fortran语言,解决办法很简单,安装一下fortran编译器,在linux终端中输入以下命令:
sudo apt install gfortran
sudo ldconfig
二、S2库编译
S2是一个用于处理几何形状的包。与许多几何库不同,S2 主要设计用于处理球面几何,即在球体上而不是在平面 2D 地图上绘制的形状。这使得它特别适合处理地理数据。
S2源码编译过程可在下面链接进行访问:https://github.com/google/s2geometry
在编译前会提示先进行依赖库的安装,除abseil库外,其他库可以直接通apt-get安装,打开终端,执行以下命令:
sudo apt-get install cmake libgflags-dev libgoogle-glog-dev libgtest-dev libssl-dev
1)abseil库要用源码编译安装 缺少abseil库时,编译S2库会报下图所示类型错误:
解决办法:linux终端输入以下命令:
git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
2)报错类型:
Could Not find OpenSSL
缺少OpenSSL库,如下图:
解决办法:linux终端输入以下命令
sudo apt install libssl-dev
3)gtest报错 does not contain a CMakeLists.txt file
gtest是一个跨平台的(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C++单元测试框架,由google公司发布。gtest是为在不同平台上为编写C++测试而生成的。
首先,源码编译安装gtest,打开终端输入以下命令:
git clone GitHub - google/googletest: GoogleTest - Google Testing and Mocking Framework
cd googletest
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
按照以下步骤进行安装:
sudo apt-get install libgtest-dev
sudo apt install cmake #安装cmake
cd /usr/src/gtest
sudo cmake cMakeLists.txt
sudo make
sudo cp *.a/usr/lib
微信公众号GIS攻略同步更新,欢迎大家关注,共同交流学习。