---
title: 编译和安装
description: "1. 使用PuTTY工具，以root用户登录服务器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/openmind_kunpengopenfoam_02_0011.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/openmind_kunpengopenfoam_02_0011.html
indexId: 8296be4fba10158c827ebfce174335a54c55990abda24fe0bee671154f3743c179
---
# 编译和安装

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令进入OpenFOAM安装包所在目录。

```
cd
/path/to/OpenFOAM
```


3. 执行以下命令解压OpenFOAM安装包。

```
tar -xvf OpenFOAM-v1906.tgz
tar -xvf ThirdParty-v1906.tgz
```


4. 执行以下命令进入解压后的目录。

```
cd OpenFOAM-v1906
```


5. 执行以下命令创建并编辑补丁“List.H.patch”文件。

  a. 创建补丁“List.H.patch”文件。

```
vi
List.H.patch
```


  b. 按“i”进入编辑模式，输入如下内容。

```
--- ./src/OpenFOAM/containers/Lists/List/List.H.bak    2019-11-08 01:12:53.000000000 +0800
+++ ./src/OpenFOAM/containers/Lists/List/List.H   2023-10-08 09:37:32.042542470 +0800
@@ -58,8 +58,7 @@ namespace Foam
// Forward declarations
-class Istream;
-class Ostream;
+
template<class T> class List;
template<class T, unsigned N> class FixedList;
@@ -113,6 +112,11 @@ class List
public:
+    //Related types
+
+      //-Declare type of subList
+      typedef SubList<T> subList;
+
// Static Member Functions
@@ -199,14 +203,6 @@ public:
//- Destructor
~
List();
-
-
-    // Related types
-
-        //- Declare type of subList
-        typedef SubList<T> subList;
-
-
// Member Functions
// Edit
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 执行以下命令创建并编辑补丁“IListStream.H.patch”文件。

  a. 创建补丁“IListStream.H.patch”文件。

```
vi
IListStream.H.patch
```


  b. 按“i”进入编辑模式，输入如下内容。

```
--- ./src/OpenFOAM/db/IOstreams/memory/IListStream.H    2019-11-08 01:12:53.000000000 +0800
+++ ./src/OpenFOAM/db/IOstreams/memory/IListStream.H    2023-10-08 09:30:05.506542470 +0800
@@ -115,7 +115,7 @@ public:
reset_gbuffer();
}
-        //- Transfer contents to other list
+        //- Transfer contents to other List
inline void swap(List<char>& list)
{
List<char>::swap(list);
@@ -128,7 +128,7 @@ public:
/*---------------------------------------------------------------------------*\
Class IListStream Declaration
-\*----------------------------------------------d-----------------------------*/
+\*---------------------------------------------------------------------------*/
//- An ISstream with internal List storage
class IListStream
@@ -158,7 +158,7 @@ public:
//- Move construct from List
IListStream
(
-            List<char>&& buffer,
+            ::Foam::List<char>&& buffer, // Fully qualify (issue #1521)
streamFormat format=ASCII,
versionNumber version=currentVersion,
const Foam::string& name="input"
@@ -184,7 +184,7 @@ public:
{}
-    // Member functions
+    // Member Functions
//- The current get position in the buffer
using allocator_type::size;
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 执行以下命令应用patch。

```
patch -p0 < List.H.patch
patch -p0 < IListStream.H.patch
```


8. 修改OpenFOAM安装参数文件中编译器、MPI设置。
  修改export WM_COMPILER=/path/to/clang为export WM_COMPILER=Clang

  “/path/to/clang”应改为毕昇编译器“clang”文件的路径。

9. 执行以下命令修改编译参数。

```
sed -i 's/\-O3/\-O3 \-march=armv8-a/g'
/path/to/OpenFOAM
/OpenFOAM-v1906/wmake/rules/linuxARM64Clang/c++Opt
sed -i 's/\-O3/\-O3 \-march=armv8-a/g'
/path/to/OpenFOAM
/OpenFOAM-v1906/wmake/rules/linuxARM64Clang/cOpt
```


10. 执行以下命令使OpenFOAM配置文件bashrc生效。

```
source etc/bashrc
```


11. 执行以下命令进行编译安装。

```
./Allwmake -j -k
```
