openfoam安装中出现allmake error_如何更新OpenFOAM的版本?

这是协作翻译的第四章,翻译完感觉挺有意思的,分享给大家一起看看。

4.更新OpenFOAM版本

4.1 版本管理

OpenFOAM以两种不同的方式分发。一种方式是使用Git仓库下载的仓库版本。仓库版本的版本号由附加的x标记,例如 OpenFOAM2.1.x。该版本会经常更新,并在某种程度上是开发版本。这个版本的更改和更新发布很快,但是,此版本中出现错误的可能性也更大。由于此发行版经常更新,因此在一个系统上安装的2.1.x版本的内容和另一个系统上安装的2.1.x版本可能会不同。因此,每个安装都有附加的信息来标记不同版本的OpenFOAM。版本号随附一个哈希码,以唯一地标识仓库版本的各个内部版本,请参见列表9。每当更新并重新编译OpenFOAM时,此哈希码都会更改。如果内部版本相同,则两个OpenFOAM安装处于相同级别。

Build : 2.1. x -9 d344f6ac6af

列表 9: 仓库版本的完整版本标识

除了仓库版之外,还有软件包版本。与仓库版本相比,这些更新的间隔时间更长。软件包发行版的版本号不包含x,例如OpenFOAM 2.1.1。与仓库版相反,所有相同版本号的安装都是相同的。由于发行周期较长,因此认为发行包不太容易出现软件错误。

这些软件版本有几种不同的类型。这些是针对广泛使用的Linux发行版(Ubuntu,SuSE和Fedora)的预编译软件包,也是一个源码包。可以将源代码包安装在可编译源代码的任何系统上(通常是运行Linux的各种计算机,例如高性能计算集群,甚至运行其他操作系统的计算机)。例如Mac OSX甚至是Windows).

4.2 检查更新

如果从仓库版本安装了OpenFOAM,则更新非常简单。要更新OpenFOAM时,只需使用Git来检查是否有更新的源文件。在终端中切换到OpenFOAM安装的根目录,然后执行git pull。

如果仓库中有较新的文件,Git会下载它们并显示已更改文件的摘要。如列表10所示。

user@host :∼$ cd $FOAM_INST_DIR
user@host :∼/ OpenFOAM$ cd OpenFOAM -2.1. x
user@host :∼/ OpenFOAM / OpenFOAM -2.1. x$ git pull
remote : Counting objects : 67 , done .
remote : Compressing objects : 100% (13/13) , done .
remote : Total 44 ( delta 32) , reused 43 ( delta 31)
Unpacking objects : 100% (44/44) , done .
From git :// github . com / OpenFOAM / OpenFOAM -2.1. x
72 f00f7 ..21 ed37f master -> origin / master
Updating 72 f00f7 ..21 ed37f
Fast - forward
.../ extrude / extrudeToRegionMesh / createShellMesh .C | 10 +-
.../ extrude / extrudeToRegionMesh / createShellMesh .H | 7 +-
.../ extrudeToRegionMesh / extrudeToRegionMesh .C | 157 ++++++++ - - - - -
.../ Templates / KinematicCloud / KinematicCloud .H | 6 +-
.../ Templates / KinematicCloud / KinematicCloudI .H | 7 +
.../ baseClasses / kinematicCloud / kinematicCloud . H | 47 ++++++ -
6 files changed , 193 insertions (+) , 41 deletions ( -)

列表 10: 有可用的更新

如果OpenFOAM是最新的,则Git也将输出相应的消息,如列表11:

user@host :∼/ OpenFOAM / OpenFOAM -2.1. x$ git pull
Already up -to - date .

列表 11: OpenFOAM是最新的

4.3 仅检查更新

如果您只想检查更新而没有实际进行更新,则可以使用特殊选项来调用Git(请参见列表12和13)。在这种情况下,Git仅检查仓库并显示其发现的结果,而不会实际进行任何更改。负责此操作的选项是--dry-run。注意,这里调用了git fetch而不是git pull。git pull调用git fetch下载远程文件,然后调用git merge将检索到的文件与本地文件合并。因此,检查更新实际上是通过git fetch完成的。

user@host :∼$ cd OpenFOAM / OpenFOAM -2.0. x/
user@host :∼/ OpenFOAM / OpenFOAM -2.0. x$ git fetch --dry - run -v
remote : Counting objects : 189 , done .
remote : Compressing objects : 100% (57/57) , done .
remote : Total 120 ( delta 89) , reused 93 ( delta 62)
Receiving objects : 100% (120/120) , 17.05 KiB , done .
Resolving deltas : 100% (89/89) , completed with 56 local objects .
From git :// github . com / OpenFOAM / OpenFOAM -2.0. x
5 ae2802 ..97 cf67d master -> origin / master
user@host :∼/ OpenFOAM / OpenFOAM -2.0. x$

列表 12: 仅检查更新–可用更新

user@host :∼$ cd OpenFOAM / OpenFOAM -2.1. x/
user@host :∼/ OpenFOAM / OpenFOAM -2.1. x$ git fetch --dry - run -v
From git :// github . com / OpenFOAM / OpenFOAM -2.1. x
= [ up to date ] master -> origin / master
user@host :∼/ OpenFOAM / OpenFOAM -2.1. x$

列表 13: 仅检查更新–最新

4.4 安装更新

在通过git pull下载更新后,需要编译更改的源文件才能更新可执行文件。这与安装OpenFOAM时所执行的方法相同。只需调用./Allwmake进行编译。该脚本可以识别更改,因此不会再次编译未更改的文件。因此,更新后进行编译所需的时间少于安装OpenFOAM时所需的时间。

4.4.1 工作流程

清单14显示了更新现有OpenFOAM安装所需的命令。但这仅适用于仓库版本(例如OpenFOAM-2.1.x)的更新。点版本(OpenFOAM的版本号中没有x)的更新方式与仓库版本的更新方式不同。为简单起见,可以将Point Release(OpenFOAM-2.1.0→OpenFOAM-2.1.1)的更新视为全新安装,请参见第3.6节。

将清单14中的前两个命令更改为OpenFOAM安装目录。然后,通过调用git pull下载最新的源文件。

wclean all这一句可以省略。但是,如果编译以某些错误结束,则此命令通常可以解决问题,请参见第4.5.2节。最后一条语句会编译源文件。如果以前未调用wclean all,则仅编译发生更改的文件。如果调用了wclean all,则将编译所有内容。这可能将花费更长的时间。

如果有足够的时间进行更新(例如整夜),则应在编译之前调用wclean all。在大多数情况下,这将确保更新源的成功编译。

cd $FOAM_INST_DIR
cd OpenFOAM -2.1. x
git pull
wclean all (可以省略)
./ Allwmake

列表 14: 更新现有的OpenFOAM安装的完整的工作流程

4.4.2 问题排查

如果编译报告了一些错误,则再次调用./Allwmake会很有帮助。这大大减少了成功操作的输出(译者注:成功编译的源文件将不再显示,只会在出错的位置显示错误信息),因此更容易找到编译器的实际错误消息。

4.5 更新问题

4.5.1 缺少安装包

如果对操作系统进行了升级,则可能会发生确实安装包的情况,这意味着在更新过程中已删除了一些相关的软件包(例如,如果需要这些软件包来编译OpenFOAM,但操作系统“认为”这些软件包不是必需的)。因此,如果在操作系统升级后重新编译OpenFOAM失败,则可能是缺少软件包的原因。

4.5.2 库的更新

库更新后,必须重新编译它们。否则,求解器将调用尚未编译的库函数。为了避免此问题,必须重新编译相应的库。

wclean all

列表 15: 使用wclean准备重新编译

一个更暴力的方式是重新编译整个OpenFOAM,而不是重新编译更新的库。

4.5.3 更新的源无法编译

在某些情况下,例如当源文件的组织发生变化时,源文件将无法立即编译。又或者,如果有其他未知原因导致无法编译源代码,则可以选择完全重新编译OpenFOAM。尽管编译OpenFOAM需要花费时间,但与跟踪所有错误相比,这可能花费的时间更少。

要重新编译OpenFOAM,需要重置源。有一个简单的命令可以解决此问题,而不是删除OpenFOAM并重新安装。如列表16所示:

git clean - dfx

列表 16: 使用git重置源

列表16中列出的命令使Git擦除没有跟踪的所有文件。这意味着所有不属于git-repository的文件都将被删除。在这种情况下,将重置为OpenFOAM的官方git仓库版本。git clean从当前目录开始递归删除所有不受版本控制的文件。选项-d表示还删除了未跟踪的文件夹。

执行列表16中的命令后,必须按照3.3节中的说明重新编译源。

4.5.4 自有代码无法运行

更新您的OpenFOAM的仓库版本会产生有趣的效果。当OpenFOAM的库更新时,它们的实现可能会更改。即使更新的代码与先前的代码完全兼容,更新后的编译库看起来也可能不同。因此,即使更新保持了代码的兼容性,更新也可能破坏二进制兼容性。因此,需要在基础OpenFOAM安装更新之后重新编译您自己的代码。

更新OpenFOAM之后加载丢失了二进制兼容性的库时会导致分段错误。发生这种情况是因为我们自己的求解器在启动时会动态加载所需的OpenFOAM库,但是库更新之后该库某些对象的内存布局已更改了。

有关此主题的更多信息,请参见以下资源:

  • https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B

  • https://en.wikipedia.org/wiki/Binary_code_compatibility

  • https://en.wikipedia.org/wiki/Source_code_compatibility

失去二进制兼容性不会在每次更新后发生,并且并非在每个库中都发生。因此,在更新以及成功使用其他自己创建的求解器和库的很长一段时间之后,您可能才会遇到此类问题。因此,用户可能无法立即清楚这些问题的根源。如果您的代码突然由于没有原因的无法正常运行了,请重新编译并查看会发生什么。

4ad2f9467a3b9d7b7d8aa7ff147cf5e9.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相同布局在不同手机上显示不同_不懂响应式,不同尺寸屏幕下的页面很难达到最佳效果...

让用户在不同设备和尺寸的屏幕下看的页面显示效果更佳,屏幕空间利用更高,操作体验更统一,交互方式更符合习惯。本文主要围绕什么是响应式,如何搭建响应系统,响应式网站解析 三个部分进行阐述,在项目中提前定…

markdown 流程图_测试了12款Markdown编辑器,推荐一个最好用的!

有很多喜欢写博客的小伙伴问我,这个代码笔记的格式怎么弄的简洁又好看,虽然csdn里面有Markdown的书写模式,但是我还是想推荐一款比较好用的写笔记的编辑器 - Typora。相信很多小伙伴都在使用吧,这个一直是我最喜欢的 markdown 编辑…

mysql多行合并成一行_数据文件合并与拆分

在数据处理业务中,经常要把文件结构相同或近似相同的数据文件合并成一个文件,或者将一个比较大的数据文件拆分成小的数据文件。本文将介绍文本文件和 Excel 文件合并及拆分会遇到的几种情况,并提供用 esProc SPL 编写的代码示例。esProc 是专…

suse linux增加新磁盘分区,Virtualbox中Linux添加新磁盘并创建分区

引言:我们常常在使用系统的时候突然发现,哎呦~~~我们的磁盘空间不够用啦!我遇到常见的就是数据库数据暴增,预留的空间没有啦,只好新添加磁盘,在VB虚拟机上就可以实现,往往苦于没有图文并茂的好资…

arcgis字段计算器无法赋值_Arcgis空间连接工具的妙用

​Arcgis功能真的无比强大,读书时一般只会用到一些常见的,工作后挖掘了很多新功能,数据处理效率大幅提升,个人觉得arcgis是最强大最好用的gis软件!本节给大家分享下空间连接功能的两个妙用。空间连接功能很多giser应该…

SpringMVC Mybatis Shiro RestTemplate的实现客户端无状态验证及访问控制【转】

2019独角兽企业重金招聘Python工程师标准>>> A.首先需要搭建SpringMVCShiro环境 a1.pom.xml配置 spring: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId><version>4.1.0.RELEAS…

sql服务器默认密码_搭建一个DNS服务器,轻松实现域名解析内容分发,访问速度提高N倍...

DNS服务器&#xff0c;Domain Name Server&#xff0c;域名解析服务器&#xff0c;互联网上相互通信使用的是IP&#xff0c;但是IP是又长又臭又难记&#xff0c;所以创造了域名来解决IP难写难记的问题&#xff0c;记一个g.cn比203.208.50.127强过不知多少倍了。有了域名&#x…

linux .net 控制台应用程序,VisualStudioCode创建的asp.net core控制台程序部署到linux

1、asp.net core控制台程序static void Main(string[] args){int times10;while(times>0){Console.WriteLine("Hello World!");times--;Thread.Sleep(1000);}}2、发布发布前&#xff0c;修改test2.csproj文件(项目名称为test2)Exenetcoreapp2.1centos.7-x64主要添…

linux系统怎样写单片机程序,单片机知识是Linux驱动开发的基础之一以及如何学单片机...

这是arm裸机1期加强版第1课第2、3节课程的wiki文字版。为什么没前途也要学习单片机&#xff1f;因为它是个很好的入口。学习单片机可以让我们抛开复杂的软件结构&#xff0c;先掌握硬件操作&#xff0c;如&#xff1a;看原理图、芯片手册、写程序操作寄存器等。在上一节视频里&…

bat 批处理 常用命令和乱码问题

为什么80%的码农都做不了架构师&#xff1f;>>> rem echo off ECHO OFF XCOPY E:\test.bat D:\ IF ERRORLEVEL 1 ECHO 文件拷贝Failure IF ERRORLEVEL 0 ECHO 文件拷贝Success :start set /p first"1记事本,2远程:" if %first% LEQ 2 (IF %first% …

SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API加载

作者&#xff1a;yx 文章目录 一、发布服务二、代码加载三、结果展示 一、发布服务 SuperMap iServer支持将地图发布为ArcGIS REST地图服务&#xff0c;您可以在发布服务时直接勾选ArcGIS REST地图服务&#xff0c;如下图所示&#xff1a; 也可以在已发布的地图服务中&#x…

new file会创建文件吗_Rust 文件系统处理之文件读写 Rust 实践指南

Rust 中&#xff0c;文件读写处理简单而高效。代码也很紧凑&#xff0c;容易阅读。我们从读取文件的字符串行、避免读取写入同一文件、使用内存映射随机访问文件这三个文件处理中的典型案例来了解一下。文件处理场景大家都很熟悉&#xff0c;因此闲言少叙&#xff0c;直接看代码…

【Maven学习笔记(二)】Maven的安装与配置

为什么80%的码农都做不了架构师&#xff1f;>>> 1、默认本地仓库路径 C:\Users\97449\.m2\repository 2、修改本地仓库路径 打开D:\apache-maven\conf\settings.xml <?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apa…

npm 全局安装vuecli报错_cnn explainer本地使用--被npm坑惨

最近在知乎上面看到&#xff0c;看到一个cnn解释器&#xff0c;把每个步揍都很清楚的展示了出来&#xff0c;我想自己搞来玩玩。第一次使用npm&#xff0c;很多地方不会&#xff0c;第一步&#xff1a;先在网页上下载下来cnn_explainer&#xff0c;然后解压在没有中文路径的文件…

Python程序从给定的N个数字中找到最大倍数

Here, we will be framing code for finding the maximum multiple of a number x from a given set of a number (set of 5 numbers in this program). 在这里&#xff0c;我们将使用成帧代码&#xff0c; 从给定的一组数字(此程序中的5个数字组成的集合)中找到x的最大倍数 。…

openmpi安装_Intel Parallel Studio XE 2019安装设置

1.Intel Parallel Studio XE 2019简介Intel Parallel Studio XE 是Intel在单独一款软件开发套件中整合了英特尔公司业界领先的 C/C 和 Fortran 编译器、性能和MPI并行库、错误检查、代码健壮和性能分析的工具&#xff0c;有助于大幅提升应用程序性能&#xff0c;同时提高代码质…

[Android] 开源View组件(一)

Material Design系列&#xff0c;自定义Behavior实现Android知乎首页 仿今日头条最强顶部导航指示器&#xff0c;支持6种模式 MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器 Android 优雅的为RecyclerView添加HeaderView和FooterView Android …

sql server修改字段编码格式_关于MySQL如何修改character_set_client的编码问题

问题引入&#xff1a;我们经常会遇到一些向MySQL数据库中插入中文&#xff0c;但是select出来的时候&#xff0c;却发现是乱码的情况。如我们向表a出入这样一段记录&#xff1a;iinsert into a values(‘你好helloworld你好’,’helloworld’);可能当你访问它的时候&#xff0c…

通用apdu指令_8086微处理器中的通用指令格式

通用apdu指令Introduction: 介绍&#xff1a; In this article, we are going to discuss about the 6 general formats of instructions. 在本文中&#xff0c;我们将讨论6种通用指令格式。 One byte instruction: 一字节指令 &#xff1a; This is only one byte long an…

Win10系统怎样让打开图片方式为照片查看器

打开注册表编辑器之后&#xff0c;我们双击左侧的目录&#xff0c;依次打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft目录&#xff0c;如下图所示。 在Microsoft目录下&#xff0c;我们需要找到Windows Photo Viewer\Capabilities\FileAssociations目录项&#xff0c;直到看到该子…