当前位置: 首页 > news >正文

【WPS安装】WPS编译错误总结:WPS编译失败+仅编译成功ungrib等

WPS编译错误总结:WPS编译失败+仅编译成功ungrib等

  • WPS编译过程
  • 问题1:WPS编译失败
    • 错误1:gfortran: error: unrecognized command-line option ‘-convert’; did you mean ‘-fconvert=’?
    • 解决方案
  • 问题2:WPS编译三个exe文件只出现ungrib.exe
    • 解决方案1:修改configure.wps文件
    • 解决方案2:取消MPI的环境变量设置
  • 问题3:ungrib 编译失败
    • 1. GRB2库包安装
      • zlib库(PNG 库使用的压缩库)
      • libpng库(“无损”压缩的压缩库)
      • jasper库(JPEG2000 标准的“有损”压缩实现)
    • 2. 确认配置路径
  • 参考
    • 另:为什么要修改 .bashrc 文件的环境变量?

WPS编译过程

WRF 预处理系统使用与 WRF 模型类似的构建机制。geogrid 和 metgrid 的外部库仅限于 WRF 模型所需的库,因为 WPS 使用 WRF 模型的 WRF I/O API 实现;因此,必须在安装 WPS 之前编译 WRF,以便 WPS 程序可以使用 WRF 外部目录中的 I/O API 库。

构建 WRF 模型(和 WPS)所需的唯一库是 netCDF;但是,ungrib 程序需要三个压缩库来支持 GRIB Edition 2(如果不需要支持 GRIB2 数据,则可以编译 ungrib 而无需这些压缩库)。

1、获取 WPS 代码

2、移至 WPS 目录(请注意,它可能被命名为其他名称,例如 WPSV4.4)。
建议清理 WPS 目录,以确保没有残留的配置或编译文件:

cd WPS
cd /home/testmodel/Build_WRF/WPS-4.6.1/./clean
./clean -a

3、设置 WRF_DIR 环境变量。
在 WPS 编译中,ungrib.exe 程序需要使用 GRIB2 数据格式库。如果未正确设置这些路径,ungrib.exe 的编译会失败。

export JASPERLIB=/path/to/grib2/lib
export JASPERINC=/path/to/grib2/includeexport JASPERLIB=/home/testmodel/soft/grib2/lib
export JASPERINC=/home/testmodel/soft/grib2/include

4、配置WPS

./configure

5、编译WPS
在命令行中输入以下内容(始终使用“&>”语法将标准错误和输出发送到日志文件。如果编译失败,这很有用)。

./compile >& compile.log

与编译 WRF 相比,WPS 编译应该相对较快。如果成功,以下可执行文件应出现在 WPS 目录中,并从其相应的源代码目录链接。

ls geogrid.exe ungrib.exe metgrid.exegeogrid.exe -> geogrid/src/geogrid.exe
ungrib.exe -> ungrib/src/ungrib.exe
metgrid.exe -> metgrid/src/metgrid.exe

在这里插入图片描述
终于!终于编译成功了!!!!要命啊啊啊啊啊!!!

ls -ls geogrid/src/geogrid.exe

【注意】必须先成功编译WRF,才能编译WPS,顺序不能颠倒。如果编译WRF后配置WPS时仍提示No compiled WRF code found,则说明WPS找不到WRF的目录,请检查你的WRF文件夹的名称是否为WRF,或者设置WRF文件夹的路径:

export WRF_DIR=/home/xxx/Build_WRF/WRFV4.5.1

问题1:WPS编译失败

如果代码编译失败,请打开日志文件(例如,compile.log)并搜索大写字母“E”的“Error”一词。通常,文件中列出的第一个错误是失败的罪魁祸首,所有其他错误都是初始问题的结果。

错误1:gfortran: error: unrecognized command-line option ‘-convert’; did you mean ‘-fconvert=’?

这是因为编译器 gfortran 不支持 Intel Fortran 编译器(ifort)的选项 -convert。WPS 的配置文件中包含了 -convert 选项,而编译时使用的是 gfortran,导致选项无法识别。

问题原因

1、编译器选项冲突:
-convert 是 Intel Fortran 编译器(ifort)特有的选项,用于指定字节序(如 -convert big_endian)。
gfortran 的等价选项是 -fconvert=,例如 -fconvert=big-endian。
如果 WPS 配置文件中生成了 -convert,但实际使用 gfortran 编译,就会出现此问题。

2、编译器不一致:
在配置 WPS 时,选择了 Intel 编译器(如选项 23: Intel Classic Compilers dmpar),但实际编译时使用了 gfortran。
这通常是因为环境变量未正确设置,导致 WPS 的编译器调用了错误的编译器。

在WPS编译时选择15(采用icc进行编译),与默认的编译器不同,导致报错。

解决方案

1、确保编译器一致性
编译 WPS 时,必须使用与 WRF 编译时相同的编译器。假设 WRF 使用 Intel 编译器(ifort 和 icc),请确保环境中默认的编译器是 Intel 编译器。

设置 Intel 编译器环境:

source /opt/intel/oneapi/setvars.sh
source /home/testmodel/intel/oneapi/setvars.sh

验证 ifort 和 icc 是否可用:

which ifort
which icc

问题2:WPS编译三个exe文件只出现ungrib.exe

WPS编译成功,但只出现ungrib.exe,如下:
在这里插入图片描述

1、确保 WRF 编译成功。
WPS geogrid 和 metgrid 可执行文件使用 WRF/external/ 目录中的外部 I/O 库 - 安装 WRF 时会构建这些库,如果安装不正确,geogrid 和 metgrid 程序将无法编译。

2、检查构建 WPS 时使用的编译器(和版本)是否与构建 WRF 时使用的编译器(和版本)相同。

3、检查构建 WPS 时使用的 netCDF(和版本)是否与构建 WRF 时使用的 netCDF(和版本)相同。

4、WRF_DIR 的路径是否设置正确?
检查 WRF 目录的路径和名称

echo $WRF_DIR

解决方案1:修改configure.wps文件

由于WRF编译先于WPS编译,因此可能出现WPS的configure文件中WRF_DIR路径不对的情况,可以在./configure之后,检查configure.wps文件中的WRF-DIR是否正确。

并且在WRF-LIB的设置中,在-lnetcdf之后添加 -lgomp,再执行compile操作。
在这里插入图片描述

解决方案2:取消MPI的环境变量设置

如果在此之前你已经安装编译了MPI,那么需要取消MPI的环境变量设置,这是因为mpi的存在会影响WPS的编译(这里我选择的WPS为serial)。

在当前shell下执行 :

unset MPI
unset MPI_LIB
unset MPI_INC

之后./clean -a 并重新编译,即可成功。

问题3:ungrib 编译失败

1. GRB2库包安装

确保 jasper、zlib 和 libpng 库已正确安装(如果使用 GRIB2 支持进行编译)。
如果计划使用 GRIB Edition 2 输入数据运行真实数据模拟(很有可能),WPS ungrib 程序需要以下库,因此必须在配置 WPS 之前安装这些库。

用户可以获取这些库并将其安装在他们的系统上,或者他们可以使用在编译 WPS 期间构建的库的 WPS 内部副本(适用于 4.4 及以上版本)。

用户安装的压缩库的路径在 configure.wps 文件中由“COMPRESSION_LIBS”和“COMPRESSION_INC”变量处理。确保 WPS 配置能够找到所有库文件的最简单方法是将这三个文件都安装在一个公共目录中。例如,如果库将安装在 /usr/local 中,则在 /usr/local 中创建一个库,名称类似于 grib2。请参阅每个库下方的说明,以确保它们安装在正确的位置。

zlib库(PNG 库使用的压缩库)

1、下载 zlib 包并解压。
从 zlib 的官方网站或其镜像下载最新版本的 zlib 包。下面以 zlib 1.2.13 为例:

wget https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz  # 使用 wget 下载 zlib
tar -zxvf zlib-1.2.13.tar.gz               # 解压缩下载的 tar.gz 文件

2、进入解压后的目录

cd zlib-1.2.13

3、发出以下命令进行安装
(注意:这是按照上述示例将所有库文件放在 grib2 目录中。此路径可能因系统和用户偏好而异)

./configure --prefix=/usr/local/grib2
./configure --prefix=/home/wanzhou/soft/grib2
./configure --prefix=/home/testmodel/soft/grib2
make
make install

4、验证安装是否成功

ls /usr/local/grib2/lib | grep zlibls /home/wanzhou/soft/grib2/lib | grep zlib

libpng库(“无损”压缩的压缩库)

1、下载 PNG 包并解压。

wget http://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz
tar -zxvf libpng-1.6.37.tar.gz

2、进入解压后的目录

cd libpng-1.6.37

3、执行以下命令进行安装
(注意:这是按照上述示例将所有库文件放在 grib2 目录中。此路径可能因系统和用户偏好而异)

./configure --prefix=/usr/local/grib2
./configure --prefix=/home/wanzhou/soft/grib2
./configure --prefix=/home/testmodel/soft/grib2
make
make install

4、验证安装是否成功

ls /usr/local/grib2/lib | grep zlibls /home/wanzhou/soft/grib2/lib | grep zlib

应该看到类似于 libpng.so 或 libpng.a 的文件。

jasper库(JPEG2000 标准的“有损”压缩实现)

1、下载 JasPer 包并解压。

wget https://sourceforge.net/projects/jasper/files/jasper-version-1.900.1.zip/download -O jasper-1.900.1.zip
unzip jasper-1.900.1.zip

2、进入解压后的 JasPer 目录

cd jasper-1.900.1

3、发出以下命令进行安装
(注意:这是按照上述示例将所有库文件放在 grib2 目录中。此路径可能因系统和用户偏好而异)

./configure --prefix=/usr/local/grib2
./configure --prefix=/home/wanzhou/soft/grib2
make
make install

2. 确认配置路径

确保“configure.wps”中的以下行使用了正确的路径。

1、可以在configure前执行以下命令:

export JASPERLIB=/home/testmodel/soft/grib2/lib
export JASPERINC=/home/testmodel/soft/grib2/include

2、也可在configure之后,打开configure.wps文件,修改以下路径

COMPRESSION_LIBS = -L/$path-to-ungrib-libraries/lib -ljasper -lpng -lz
COMPRESSION_INC = -I/$path-to-ungrib-libraries/include

参考

1、CSDN官网-WPS编译三个exe文件只出现ungrib.exe?解决办法

2、WRF论坛-(RESOLVED) When compiling WPS3.9.1, weird things georigid.exe and ungrib.exe were generated, but one metgrid.exe

另:为什么要修改 .bashrc 文件的环境变量?

1、持久性:当你在终端中使用 export 命令时,设置的环境变量只在当前会话中有效。如果你关闭终端或打开一个新的终端窗口,这些变量将不再存在。通过将这些 export 命令添加到 .bashrc 文件中,可以确保每次打开终端时,这些环境变量都会自动设置。

2、方便性:如果你经常需要使用 GRIB2 库,修改 .bashrc 文件可以避免每次手动设置环境变量的麻烦。

3、共享性:在 .bashrc 中设置的环境变量可以被所有在该 shell 会话中启动的程序和脚本访问,这样可以确保它们能够找到所需的库和头文件。

相关文章:

【WPS安装】WPS编译错误总结:WPS编译失败+仅编译成功ungrib等

WPS编译错误总结:WPS编译失败仅编译成功ungrib等 WPS编译过程问题1:WPS编译失败错误1:gfortran: error: unrecognized command-line option ‘-convert’; did you mean ‘-fconvert’?解决方案 问题2:WPS编译三个exe文件只出现u…...

pytorch MoE(专家混合网络)的简单实现。

专家混合(Mixture of Experts, MoE)是一种深度学习模型架构,通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络(即子模型),然后根据门控网络(gating network)的输出…...

虚拟机VMware的安装问题ip错误,虚拟网卡

要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了,又重新安装,一般都会有问题 卸载重装vmware: 第一…...

Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门hello world输出【入门一】

开发环境搭建:Linux-Ubuntu下搭建ESP32的开发环境的步骤,使用乐鑫最新稳定版的esp-idf-CSDN博客 一、安装好开发环境后,在esp目录下再创建一个esp32的目录【用于编程测试demo】 二、进入esp32目录,打开终端【拷贝esp-idf的hello工…...

重温设计模式--命令模式

文章目录 命令模式的详细介绍C 代码示例C代码示例2 命令模式的详细介绍 定义与概念 命令模式属于行为型设计模式,它旨在将一个请求封装成一个对象,从而让你可以用不同的请求对客户端进行参数化,将请求的发送者和接收者解耦,并且能…...

电力通信规约-104实战

电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中,主要用来进行数据传输和转发,本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java,所以本篇将采用Java实例来进行讲解。首先我们搭建一…...

什么是事务

在数据库管理系统中,事务(Transaction)是执行一系列操作的最小工作单元,这些操作要么全部成功,要么全部失败。为了确保数据的一致性和完整性,事务被设计为具备四大特性,即原子性(Ato…...

数据结构:双向循坏链表

目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插,头删 ,尾插,尾删 1.1双向循环链表的结构 …...

3.1、SDH的5种标准容器

1、定义与作用 在 SDH(同步数字体系)中,标准容器(C)是一种用来装载各种速率的 PDH(准同步数字系列)信号的信息结构。它的主要作用是进行速率适配,使不同速率的 PDH 信号能够在 SDH 的…...

Jenkins介绍

Jenkins 是一款流行的开源自动化服务器,在软件开发和持续集成 / 持续交付(CI/CD)流程中发挥着关键作用。 一、主要功能 1.持续集成(CI) (1).自动构建:Jenkins 可以配置为监听代码仓…...

5G学习笔记之Non-Public Network

目录 0. NPN系列 1. 概述 2. SNPN 2.1 SNPN概述 2.2 SNPN架构 2.3 SNPN部署 2.3.1 完全独立 2.3.2 共享PLMN基站 2.3.3 共享PLMN基站和PLMN频谱 3. PNI-NPN 3.1 PNI-NPN概述 3.2 PNI-NPN部署 3.2.1 UPF独立 3.2.2 完全共享 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】S…...

网页生成鸿蒙App

如何网页生成鸿蒙App 纯鸿蒙发布后,鸿蒙App需求上升。如何快速生成鸿蒙App。变色龙云(http://www.appbsl.cn)推出了鸿蒙App打包服务。可以在线自动打包鸿蒙App。 第一步 创建应用 输入网站网址,上传图标。 第二步 生成鸿蒙证书 打开华为开发者管理中…...

JavaWeb通过Web查询数据库内容:(pfour_webquerymysql)

JavaWeb通过Web查询数据库内容: 数据库: 自行建库建表,主键 id 后端: 新建项目模块选择模块,添加依赖创建配置文件: db.propertiesJava类: query查询 前端: Web添加创建query.html…...

将java项目部署到linux

命令解析 Dockerfile: Dockerfile 是一个文本文件,包含了所有必要的指令来组装(build)一个 Docker 镜像。 docker build: 根据 Dockerfile 或标准指令来构建一个新的镜像。 docker save: 将本地镜像保存为一个 tar 文件。 docker load: 从…...

moviepy将图片序列制作成视频并加载字幕 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...

ROS1入门教程5:简单行为处理

一、新建项目 # 创建工作空间 mkdir -p demo5/src && cd demo5# 初始化工作空间 catkin_make# 创建功能包 cd src catkin_create_pkg demo roscpp actionlib_msgs message_generation tf 二、创建行为 # 创建行为目录 mkdir action && cd action# 创建行为文…...

Vue:实现输入框不能输负数功能

1、使用v-model指令 <input type"number" v-model"value" min"0" input"checkInput"> checkInput() {this.value Math.max(0, parseInt(this.value)); } 2、使用计算属性 <template><div><input type"…...

管理系统、微信小程序类源码文档-哔哩哔哩教程同步

文章目录 前言通用表基于JavaSpringBootVue前后端分离手机销售商城系统设计实现:基于JavaSpringBootVueuniapp实现大学生校园兼职微信小程序更新中。。。评论区打出你的题目 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能…...

AOP切点表达式之方法表达式execution

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

clickhouse-题库

1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库&#xff0c;主要用于在线分析查询 2、列式存储和行式存储有什么区别&#xff1f; 行式存储&#xff1a; 1&#xff09;、数据是按行存储的 2&#xff09;、没有建立索引的查询消耗很大的IO 3&#xff09;、建…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap&#xff0c;但是由于很多朋友看不了解命令行格式&#xff0c;所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习&#xff0c;链接&#xff1a;https://wwhc.lanzoue.com/ifJY32ybh6vc…...