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 关键点:递归、三级页表 思路: 用上图来解释三级页表的原理最…

C语言-翁恺-PTA-121-160课后练习题-04

title: C语言-翁恺-PTA-121-160课后练习题-04 tags: CPTA description: ’ ’ mathjax: true date: 2024-04-09 23:16:22 categories:CPTA 7-137 Average You are going to read a serial of none-negative integers, which ends with a negative number that does not count…

如何将Paddle(Lite)模型转换为TensorFlow(Lite)模型

模型间的相互转换在深度学习应用中很常见,paddlelite和TensorFlowLite是移动端常用的推理框架,有时候需要将模型在两者之间做转换,本文将对转换方法做说明。 环境准备 建议使用TensorFlow2.14,PaddlePaddle 2.6 docker pull te…

【windows 】taskkill命令

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

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

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

python常用知识总结

文章目录 1. 常用内置函数1. ASCII码与字符相互转换 1. 常用内置函数 1. ASCII码与字符相互转换 # 用户输入字符 c input("请输入一个字符: ")# 用户输入ASCII码,并将输入的数字转为整型 a int(input("请输入一个ASCII码: "))print( c &qu…

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

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

stacking学习

KFlod 适用于用户回归类型数据划分 stratifiedKFlod 适用于分类数据划分 并且在实验中也发现,stratifiedKFlod.split(X_train,y_train)的y_train不可为连续数据,因此无法使用,只能用KFold models [GBDT(n_estimators100), RF(n_estimators1…

【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…

dfs回溯 -- Leetcode46. 全排列

题目链接:46. 全排列 题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示…

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

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

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

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

OceanBase—操作实践

文档结构 1、概念简介2、核心设计3、操作实践3.3、数据同步 官方文档:https://www.oceanbase.com/docs/oceanbase-database-cn 1、概念简介 版本分为社区版和企业版,其中企业版兼容MySQL 和Oracle数据库语法; 2、核心设计 存储层 复制层 …

底层文件操作的各种函数(二)------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 *…

PG事务、事务隔离级别、并发控制

事物与并发控制 ################################## 事物是关系型数据库中非常重要的概念。 并发通常能带来更大的吞吐量、资源利用率和更好的性能。 当多个事物并发执行时,即使每个单独的事物都正确的执行,数据库的一致性可能被破坏。为了控制并发事物之间的相互影响,解…

专栏开篇 | 虚拟直播软件的技术架构与应用场景分析

系列文章 技术探索 特征点检测 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图tensorflow.js 使用…

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

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