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

拆解二进制炸弹:从GDB调试到浮点数逆向的实战技巧

拆解二进制炸弹&#xff1a;从GDB调试到浮点数逆向的实战技巧 逆向工程就像一场数字世界的考古探险&#xff0c;而二进制炸弹程序则是绝佳的练习场。本文将带你深入Linux环境下使用GDB进行动态调试的完整过程&#xff0c;特别聚焦浮点数表示阶段的逆向技巧。无论你是计算机专业…...

低延迟鸿蒙设备管控革新:HOScrcpy跨域投屏技术全解析

低延迟鸿蒙设备管控革新&#xff1a;HOScrcpy跨域投屏技术全解析 【免费下载链接】鸿蒙远程真机工具 该工具主要提供鸿蒙系统下基于视频流的投屏功能&#xff0c;帧率基本持平真机帧率&#xff0c;达到远程真机的效果。 项目地址: https://gitcode.com/OpenHarmonyToolkitsPl…...

OpenClaw对话日志分析:优化nanobot模型交互体验

OpenClaw对话日志分析&#xff1a;优化nanobot模型交互体验 1. 为什么需要分析对话日志 上周我在本地部署了基于Qwen3-4B-Instruct-2507模型的nanobot实例&#xff0c;通过OpenClaw框架将其接入到我的日常工作中。最初几天&#xff0c;我发现这个轻量级模型虽然响应速度快&am…...

人机协作新范式:盘点2026年全网爆红的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具横空出世&#xff0c;覆盖选题构思、文献综述、数据整理、格式排版等全流程&#xff0c;真正帮你高效搞定论文&#xff0c;告别熬夜与焦虑。 一、全流程王者&#xff1a;一站式搞定论文…...

DeerFlow智能体技能开发:从零构建自定义Research Agent

DeerFlow智能体技能开发&#xff1a;从零构建自定义Research Agent 1. 引言 如果你正在寻找一种方法来扩展DeerFlow研究团队的能力&#xff0c;让AI助手能够处理更专业的研究任务&#xff0c;那么自定义智能体技能开发就是你需要掌握的技能。想象一下&#xff0c;你的研究助手…...

Pixel Mind Decoder 嵌入式应用初探:STM32设备日志情绪分析

Pixel Mind Decoder 嵌入式应用初探&#xff1a;STM32设备日志情绪分析 1. 场景痛点与解决方案 在工业物联网领域&#xff0c;设备维护一直是个让人头疼的问题。想象一下&#xff0c;工厂里几十台STM32设备日夜运转&#xff0c;工程师们每天要盯着密密麻麻的日志数据&#xf…...

Wan2.2-I2V-A14B效果展示:实测生成高清流畅视频作品集

Wan2.2-I2V-A14B效果展示&#xff1a;实测生成高清流畅视频作品集 1. 开篇&#xff1a;惊艳的视频生成能力 最近在测试Wan2.2-I2V-A14B模型时&#xff0c;我被它生成的视频质量彻底震撼了。这个由通义万相开源的轻量级视频生成模型&#xff0c;虽然只有50亿参数&#xff0c;却…...

SDMatte镜像国产化适配:昇腾/海光平台移植可行性评估

SDMatte镜像国产化适配&#xff1a;昇腾/海光平台移植可行性评估 1. 项目背景与技术特点 SDMatte是一款专注于高质量图像抠图的AI模型&#xff0c;特别擅长处理复杂边缘和半透明物体的提取任务。该模型在电商、设计、内容创作等领域具有广泛应用价值&#xff0c;能够高效完成…...

【MCU实战】SGP30传感器I2C驱动与室内空气质量监测全解析

1. SGP30传感器与室内空气质量监测入门指南 第一次接触SGP30传感器的开发者可能会被一堆专业术语吓到&#xff0c;其实它的核心功能非常简单——告诉你周围的空气干不干净。这个火柴盒大小的芯片能同时测量两种关键指标&#xff1a;CO2&#xff08;二氧化碳&#xff09;浓度和T…...

如何实现Unitree Go2远程控制:OM1的机器人远程操控实践指南

如何实现Unitree Go2远程控制&#xff1a;OM1的机器人远程操控实践指南 【免费下载链接】OM1 Modular AI runtime for robots 项目地址: https://gitcode.com/GitHub_Trending/om/OM1 你是否曾想过在办公室就能指挥家里的Unitree Go2机器人巡逻&#xff1f;或者在外出时…...