Windows系统LibRadtran安装

Windows系统LibRadtran安装

  • 1.简介
    • 1.1官网下载
    • 1.2依赖环境
    • 1.3 Cygwin64 介绍及安装
  • 2.安装
    • 2.1安装依赖的环境
    • 2.2编译
  • 3.可能遇到的错误
    • 3.1 错误1
    • 3.2 错误2
  • 4.使用教程

1.简介

LibRadtran(Library for Radiative Transfer)是一个用于计算太阳和热辐射在大气中传输的软件包。它广泛应用于气象学、气候研究、遥感以及其他涉及大气辐射传输的领域。LibRadtran 由一组广泛的工具和模型组成,能够模拟多种大气条件和地表特性对辐射传输的影响。

LibRadtran安装相对来说比较简单,只要把以来的软件或者包安装好就可以。

1.1官网下载

https://www.libradtran.org/doku.php?id=download选择最新版或者旧版本进行下载。

1.2依赖环境

这里的依赖环境必须安装,否则编译无法通过。
在这里插入图片描述

1.3 Cygwin64 介绍及安装

Cygwin64 是一个在 Windows 操作系统上模拟类 Unix 环境的软件工具。它提供了一个兼容层,使得原本设计在 UNIX 系统上运行的应用程序能够在 Windows 上编译和运行。Cygwin 主要通过提供一个丰富的 POSIX API 功能集来实现这一点,包括各种命令行工具和程序,这些通常只在 UNIX 或 Linux 系统中可用。

因为LibRadtran需要在Linux或者UNIX系统进行编译,如果你正好擅长这两种系统,这篇博文不适合你。如果是在Windows系统编译使用LibRadtran,我们首先安装Cygwin64 ,在Cygwin64 中来编译LibRadtran,生成可在Windows系统使用的执行程序即可。

Cygwin64 的安装可以参考我的另一篇博文Cygwin及Wget安装根据博文中的内容安装gfogran,因为编译LibRadtran是需要fotran环境的。

2.安装

2.1安装依赖的环境

这一步,我们已经安装好Cygwin了。使用Cygwin安装依赖的软件或包。

安装:libnetcdf-devel(开发库)和netcdf(运行时库)
安装:MPI
安装:Perl、Flex和Lex:这些工具通常用于处理脚本和代码生成。
安装:GSL库,通过Cygwin查找并选择 libgsl0(运行时库)和 libgsl-devel(开发库)以及libgsl-dev(开发库)和 libgsl23(运行时库)。
安装m4: Cygwin 安装器,搜索 m4,选择它,然后继续安装过程。
安装 :tar ,Cygwin搜索 tar安装
安装:make

总之,编译的时候缺什么,就使用Cygwin 安装什么。Cygwin 的安装程序可以重复双击打开,选择自己需要的包进行安装即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2编译

编译很简答,官网有教程。
步骤1:解压libRadtran-2.0.5,随便用什么解压软件都可以。解压后我的安装包所在路径为:D:\ICESat-2\20231226\libRadtran-2.0.5\libRadtran-2.0.5,接下来会使用。
步骤2:打开Cygwin,输入命令

$ cd /cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5

把当前工作目录定位到解压后的软件包

步骤3:输入命令

./configure

这一步是最容易出问题的,如果遇到错误,请看本博文最后一部分内容。

成功
在这里插入图片描述

步骤4:输入命令

make

在这里插入图片描述

测试5:输入命令,检查是否编译成功,可以看到运行结果正确。

make check

在这里插入图片描述

3.可能遇到的错误

3.1 错误1

make[1]: Leaving directory '/cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5/src_py'
make[1]: Entering directory '/cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5/libsrc_c'compiling allocnd.ccompiling ascii.ccompiling bandec.ccompiling cdisort.ccompiling cnv.ccompiling common_math.c
make[1]: *** No rule to make target '/opt/local/include/netcdf.h', needed by 'triangle_surface.o'.  Stop.
make[1]: Leaving directory '/cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5/libsrc_c'
make: *** [Makefile:39: all] Error 2

解决步骤:
确认 NetCDF 库的安装位置。需要确定 netcdf.h 头文件在的系统中的实际位置。在 Cygwin 中,可以使用 find 命令来搜索这个文件:

find / -name netcdf.h 2>/dev/null

检查环境变量:确保环境变量 CPATH 和 LIBRARY_PATH 包含 NetCDF 头文件和库文件的路径。这可以通过以下命令设置(命令中的路径是上面这个命令找到的路径):

export CPATH=$CPATH:/actual/path/to/netcdf/include
export LIBRARY_PATH=$LIBRARY_PATH:/actual/path/to/netcdf/lib

如果还不行,试试下面,通常这涉及到修改如 CPPFLAGS 和 LDFLAGS 的变量:

export CPPFLAGS="-I/usr/include $CPPFLAGS"
export LDFLAGS="-L/usr/lib $LDFLAGS"

这里假设 NetCDF 的头文件位于 /usr/include,库文件位于 /usr/lib,请根据的实际安装路径调整。

3.2 错误2

rm -f ../lib/libRadtran_f.a
make[1]: Leaving directory '/cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5/libsrc_f'
make[1]: Entering directory '/cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5/src'
flex  -o uvspec_lex.c ../src_py/uvspec_lex.l
gawk 'NF==2{print "#define "$1" "$2}' sbtaugas.param > sbtaugas.h
make[1]: *** No rule to make target '/opt/local/include/gsl/gsl_math.h', needed by 'angres.o'.  Stop.
make[1]: Leaving directory '/cygdrive/d/ICESat-2/20231226/libRadtran-2.0.5/libRadtran-2.0.5/src'
make: *** [Makefile:39: all] Error 2

现在遇到的问题是编译过程中缺少 gsl_math.h,这是 GNU Scientific Library(GSL)的一部分。错误信息显示编译器试图在 /opt/local/include/gsl 目录下找到这个文件,但显然这个路径在的系统上不正确或者 GSL 未安装在该位置。

确认 GSL 的安装,需要确认 GSL 是否已经安装在的系统上。使用以下命令查找 gsl_math.h:

find / -name gsl_math.h 2>/dev/null

配置 GSL 路径,

export CFLAGS="-I/path/to/gsl/include $CFLAGS"
export LDFLAGS="-L/path/to/gsl/lib $LDFLAGS"

既然已经找到了 gsl_math.h 文件的位置在 /usr/include/gsl/gsl_math.h,我们可以确认 GNU Scientific Library(GSL)已正确安装,并且知道了它的具体路径。现在的任务是确保 LIBRADTRAN 在编译时能正确找到这个头文件。

4.使用教程

使用教程见另一篇博文:LibRadtran使用教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单列模式1.0

单列模式 单例模式能保证某个类在程序中只存在唯⼀⼀份实例, ⽽不会创建出多个实例 1.饿汉模式 只要程序一启动就会立即创建出一个对象 class Signleton{private static Signleton instancenew Signleton();//防止在以后的代码中再创建对象,我们将构造方法private,…

【MIT6.S081】Lab3: page tables(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab3.html 本实验的代码分支:https://gitee.com/dragonlalala/xv6-labs-2020/tree/pgtbl2/ Print a page table 关键点:递归、三级页表 思路: 用上图来解释三级页表的原理最…

【windows 】taskkill命令

在Windows操作系统中,并没有直接称为“kill”的命令来终止进程,但是你可以使用“taskkill”命令或者通过任务管理器来实现类似的功能。 “taskkill”是一个强大的命令行工具,可以用来终止一个或多个任务或进程。以下是一些常用的“taskkill”…

智能电网将科技拓展至工厂之外的领域

【摘要/前言】 物联网已然颠覆我们日常生活的许多层面。在家居方面,家电变成连网设备,不仅让我们能控制灯光与上网购物,甚至在出门时提供安全功能。在工业领域,智能工厂改变产品制造的方式。工业物联网(IIoT)不仅让制造商更加敏捷…

Spring Boot 学习(5)——开发流程:快速入门

花了几天的时间,整出个 “hello spring boot”,并且把它从 2 搞到了 3。 纸上得来终觉浅!自己实践出真知!现在再回头来囫囵一遍,加深下印象。回想下从前自觉某一编程语言大都如此,先找到简单示例照着画一遍…

【vue3-pbstar-books】大学生前端期末作业(vue3、element-plus、ts、pinia、vite、json-server)

一、项目要求 二、项目介绍 vue3-pbstar-books是一个图书主题的pc端网站,该项目有首页、全部书籍页、书籍分类页、书籍详情页和关于页五个页面。该方案结合了 Vue3、Element-Plus、TypeScript、Pinia 和 Vite 等先进技术,实现高效的页面布局、状态管理和…

Spring之AOP的详细讲解

目录 一.SpringAOP是什么? 1.1理论知识点 1.2简单的AOP例子 二.SpringAOP的核心概念 2.1切点(Pointcut) 2.2通知(Advice) 2.3切⾯(Aspect) 2.4通知类型 2.5切⾯优先级 Order 2.6切点表达式 2.6.1 execution表达式 2.6.2annotati…

天地人和•大道不孤——卢禹舜中国画作品展在重庆美术馆隆重开幕

2024年4月12日,由中国国家画院、重庆市文化和旅游发展委员会主办,重庆美术馆(重庆画院、重庆国画院)、北京八荒锦绣美术馆、中国国际文化交流基金会卢禹舜艺术基金承办的“天地人和•大道不孤——卢禹舜中国画作品展”开幕式在重庆…

jmeter实验 模拟:从CSV数据到加密请求到解密返回数据再到跨越线程组访问解密后的数据

注意,本实验所说的加密只是模拟加密解密,您需要届时写自己的加解密算法或者引用含有加密算法的相关jar包才行. 思路: 线程组1: 1.从CSV文件读取原始数据 2.将读取到的数据用BeanShell预习处理器进行加密 3.HTTP提取器使用加密后的数据发起请求 4.使用BeanShell后置处理器…

底层文件操作的各种函数(二)------printf,fprintf,sprintf,scanf,fscanf,sscanf的对比以及文件缓冲区

偷得几日清闲,又因一瞬之间对蹉跎时间的愧疚,由此而来到CSDN这个高手云集和新手求学的平台来也写上那么一篇博客。虽然自己的博客那么久不温不热,但坚持写作,巩固自己就好。今天要讲的是续接上一篇文章的补充与继续吧。上期文章&a…

MQ:延迟队列

6.1场景: 1.定时发布文章 2.秒杀之后,给30分钟时间进行支付,如果30分钟后,没有支付,订单取消。 3.预约餐厅,提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间: 7*30 * 60 *…

GB/T 28181标准中的错误码,国标28181中可能出现的SIP协议相关的错误码及其含义

目录 一、GB/T 28181标准介绍 (一)概述 (二)关键内容和特点 1. 系统架构: 2. 设备接入: 3. 网络通信: 4. 业务功能: 5. 安全保护: 6. 平台管理: &a…

【C语言】字符串函数和内存函数及其模拟实现

文章目录 前言 一、常见字符串库函数1.strlen函数2.长度不受限制的字符串函数2.1 strcpy2.2 strcat2.3 strcmp 3.长度受限制的字符串函数3.1 strncpy3.2 strncat3.3 strncmp 二、字符串查找函数strstrstrtok 三、strerror函数四、内存操作函数1.memcpy2.memmove3.memcmp 五、字…

力扣刷题 二叉树层序遍历相关题目II

NO.116 填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,…

iOS开发如何更改xcode中的Apple ID

在Xcode中更改Apple ID是一项常见的任务,尤其是当你需要切换到另一个开发者账号或者团队时。下面是一个简单的步骤指南,帮助你更改Xcode中的Apple ID: 步骤一:退出当前的Apple ID 1.打开Xcode应用程序。 2.在菜单栏中,…

外贸公司应该怎么选择企业邮箱?哪个企业邮箱最好?

外贸公司业务的特殊性需要他们频繁进行跨国的沟通交流,那么外贸公司应该如何选择适合的企业邮箱呢?首先,传输邮件的稳定安全是前提,另外由于沟通多是国外客户,邮件的翻译也成为外贸公司企业邮箱的刚需。小编今天就详细…

ARMv8-A架构下的外部debug模型之外部调试事件(external debug events)概述

外部调试器与处理器之间的握手与external debug events 一,External Debug的使能二,外部调试器和CPU之间的握手三,外部调试事件 External debug events1. External debug request event2. Halt instruction debug event3. Halting step debug…

【从浅学到熟知Linux】环境变量详谈(含使用程序获取环境变量的3种方法、如何查看环境变量)

🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程及数据库等内容。 🎯每天努力一点点,技术变化看得见 文章目录 环境变量基本概念查看环境变量的方法环境变量相关命令环境变量组织方式及获取环境变量的3种方法验…

Cesium.js--》探秘Cesium背后的3D模型魔力—加载纽约模型

今天简单实现一个Cesium.js的小Demo,加强自己对Cesium知识的掌握与学习,先简单对这个开源库进行一个简单的介绍吧! Cesium 是一个开源的地理空间可视化引擎,用于创建基于 Web 的三维地球应用程序。它允许开发人员在网页上呈现高度…

Java基础第十一课——类与对象(2)

由于类与对象这一部分的知识点很多,而且操作方法也有很多,所以这次将继续深入讨论一下关于类与对象中方法传参、方法重载、构造方法以及this关键字使用方面的知识。 一、方法传参 1.return关键字 return关键字作用 作用场景:方法内 作用…