【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/include

export 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.exe

geogrid.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 zlib

ls /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 zlib

ls /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 会话中启动的程序和脚本访问,这样可以确保它们能够找到所需的库和头文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Redis

1.数据结构类型 数据结构-SDS-简单动态字符串 Redis构建了一种新字符串结构,称为简单动态字符串(Simple Dynamic String),简称SDS。 Redis未直接使用C语言的字符串,如:char* s = "hello",本质是字符数组: {h, e, l, l, o, \0}。因为C语言字符串存在很多问题…

前端开发 之 12个鼠标交互特效上【附完整源码】

前端开发 之 12个鼠标交互特效上【附完整源码】 文章目录 前端开发 之 12个鼠标交互特效上【附完整源码】一:彩色空心爱心滑动特效1.效果展示2.HTML完整代码 二:彩色实心爱心滑动特效1.效果展示2.HTML完整代码 三:粒子连结特效1.效果展示2.HT…

解析mysqlbinlog

一、前置设置 ps -ef | grep mysql 查看mysql进程对应的安装目录 需设置mysql binlog日志模式为 ROW 二、执行命令 [rootlocalhost bin]# mysqlbinlog --verbose --base64-outputdecode-rows /usr/local/mysql/data/binlog.000069 > 1.sql 查看文件具体内容

理解神经网络

神经网络是一种模拟人类大脑工作方式的计算模型,是深度学习和机器学习领域的基础。 基本原理 神经网络的基本原理是模拟人脑神经系统的功能,通过多个节点(也叫神经元)的连接和计算,实现非线性模型的组合和输出。每个…

基于Vue.js和SpringBoot的笔记记录分享网站的设计与实现(文末附源码)

博主介绍:✌全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLM…

信息安全管理与评估赛题第9套

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 赛题九 模块一 网络平台搭建与设备安全防护 1 赛项时间 共计180分钟。 2 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 网络平台搭建与设备安全防护 任务1 网络平台搭建 XX:XX- XX:XX 50 任务2…

怎么在idea中创建springboot项目

最近想系统学习下springboot,尝试一下全栈路线 从零开始,下面将叙述下如何创建项目 环境 首先确保自己环境没问题 jdkMavenidea 创建springboot项目 1.打开idea,选择file->New->Project 2.选择Spring Initializr->设置JDK->…

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中,我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型,特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤,读…

【CDN】快速了解CDN是什么?以及工作原理和应用场景

快速了解CDN是什么?以及工作原理和应用场景 一、什么是CDN?CDN相关的术语解释 二、CDN工作原理三、CDN与传统网站的区别四、CDN的作用和意义五、CDN的应用场景 一、什么是CDN? CDN英文全称Content Delivery Network,中文翻译即为内…

leetcode 2295.替换数组中的元素

1.题目要求: 2.题目代码: class Solution { public:vector<int> arrayChange(vector<int>& nums, vector<vector<int>>& operations){map<int,int> element_index;//创建图存入元素和元素对应的下标for(int i 0;i < nums.size()…

clickhouse-题库

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

记录一个SVR学习

1、为什么使用jupter来做数据预测&#xff1f;而不是传统pycharm编辑器 1、Jupyter Notebook 通过anaconda统一管理环境&#xff0c;可以运行python、R、Sql等数据分析常用语言。 2、做到交互式运行&#xff0c;可以逐步运行代码块&#xff0c;实时查看结果&#xff0c;便于调…

【WRF教程第3.2期】预处理系统 WPS详解:以4.5版本为例

预处理系统 WPS 详解&#xff1a;以4.5版本为例 WPS 嵌套域&#xff08;WPS Nested Domains&#xff09;USGS 和 MODIS 土地利用重力波拖拽方案静态数据&#xff08;Gravity Wave Drag Scheme Static Data&#xff09;1. 什么是重力波拖拽方案&#xff08;GWDO&#xff09;静态…

Stealthy Attack on Large Language Model based Recommendation

传统RS依赖id信息进行推荐&#xff0c;攻击&#xff1a;生成虚假用户&#xff0c;这些用户对特定目标物体给于高评价&#xff0c;从而影响模型的训练。 基于llm的RS&#xff1a;llm利用语义理解&#xff0c;将用户兴趣转化为语义向量&#xff0c;通过计算用户兴趣向量与物品向…

Pytorch | 从零构建EfficientNet对CIFAR10进行分类

Pytorch | 从零构建EfficientNet对CIFAR10进行分类 CIFAR10数据集EfficientNet设计理念网络结构性能特点应用领域发展和改进 EfficientNet结构代码详解结构代码代码详解MBConv 类初始化方法前向传播 forward 方法 EfficientNet 类初始化方法前向传播 forward 方法 训练过程和测…

【Linux 网络 (五)】Tcp/Udp协议

Linux 网络 一前言二、Udp协议1&#xff09;、Udp协议特点2&#xff09;、Udp协议格式3&#xff09;、Udp报文封装和解包过程4&#xff09;、UDP的缓冲区 三、TCP协议1&#xff09;、TCP协议特点2&#xff09;、TCP协议格式1、4位首部长度、源端口、目的端口2、16位窗口大小3、…

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

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

Python langchain ReAct 使用范例

0. 介绍 ReAct: Reasoning Acting &#xff0c;ReAct Prompt 由 few-shot task-solving trajectories 组成&#xff0c;包括人工编写的文本推理过程和动作&#xff0c;以及对动作的环境观察。 1. 范例 langchain version 0.3.7 $ pip show langchain Name: langchain Ver…

Java设计模式 —— 【结构型模式】外观模式详解

文章目录 概述结构案例实现优缺点 概述 外观模式又名门面模式&#xff0c;是一种通过为多个复杂的子系统提供一个一致的接口&#xff0c;而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口&#xff0c;外部应用程序不用关心内部子系统的具体的细节&#xff0c;这…

【自用】通信内网部署rzgxxt项目_01,后端pipeDemo部署(使用nssm.exe仿照nohup)

做完这些工作之后&#xff0c;不要忘记打开 Windows Server 的防火墙端口&#xff0c;8181、8081、8080、22、443、1521 做完这些工作之后&#xff0c;不要忘记打开 Windows Server 的防火墙端口&#xff0c;8181、8081、8080、22、443、1521 做完这些工作之后&#xff0c;不要…