当前位置: 首页 > 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;、建…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...