第一章 Vmware和Ubuntu的安装
1.1 安装包和安装教程
链接:https://pan.baidu.com/s/1EDUmPq4Qb2s7nmy_p9rioA
提取码:hqv9
1.2 Vmware Tools的安装步骤
链接1:https://blog.csdn.net/blessed_sy/article/details/81173746
链接2:https://jingyan.baidu.com/article/22fe7ced6437433002617fee.html
1.3 关于Ubantu的一些小知识
1.3.1 Ubuntu根目录下(' / ')文件夹的结构及作用:
https://www.bilibili.com/read/cv11153370?spm_id_from=333.999.0.0
1.3.2 文件解锁的方法
在使用向日葵远程传输文件时,windows下的文件(夹)传到Ubuntu中会带锁,这个时候在Ubantu系统中对该文件(夹)是只读的,需要进行解锁才可以有写入权限,例如解锁CnCompare.f90这个带锁文件:
(1) 打开终端,其中@前面的字符为当前用户名
(2) 输入:sudo chown 用户名 文件路径
(3) 然后回车,提示输入密码,按要求输入密码即可解锁
(4) 若需要把文件上锁,把第(2)步中的用户名改为root,再回车即可上锁
(5) 其中文件路径不需要手动输入,直接选中CnCompare.f90拖进终端中即可自动加载文件路径
(6) 参考链接:https://jingyan.baidu.com/article/59a015e37a875df795886563.html
图 1 先解锁,后上锁的命令
第二章 Ifort的安装
2.1 ifort安装前环境配置
在进行ifort安装前,ubuntu内需要有一些基本库的,不然安装会不成功,在终端中使用以下两条语句完成基本库的配置:
sudo apt update
sudo apt -y install gcc g++ cmake pkg-config build-essential
查看基本库是否安装成功,在终端输入:which cmake pkg-config make gcc g++
若显示如下内容则表示基本库已安装成功:
/usr/bin/cmake
/usr/bin/pkg-config
/usr/bin/make
/usr/bin/gcc
/usr/bin/g++
2.2 ifort安装过程
(1) 打开终端,输入下面语句进行安装包的下载:
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18438/l_HPCKit_p_2022.1.1.97_offline.sh
(2) 打开终端,输入下面语句进行安装:
sudo bash l_HPCKit_p_2022.1.1.97_offline.sh
(3) 界面化安装,和windows下差不多,安装需要的模块即可
ifort安装包来源:
https://www.intel.com/content/www/us/en/developer/articles/news/free-intel-software-developer-tools.html
2.3 ifort安装后配置环境变量
(1) 对于超级管理员或根用户,默认安装位置在:/opt/intel/oneapi/
(2) 普通用户安装位置在:~/intel/oneapi/
(3) 设置环境变量:在~/.bashrc中添加source <install_dir>/setvars.sh
(4) 具体方法为:在home目录下按ctrl+h打开隐藏文件,在.bashrc最后另起一行添加source /opt/intel/oneapi/setvars.sh(这里我是以超级管理员安装的)
(5) 最后一步测试:新打开终端输入ifort -v,有ifort版本号提示即表示安装成功。
ifort配置环境变量来源:
https://www.intel.com/content/www/us/en/develop/documentation/get-started-with-intel-oneapi-hpc-linux/top/before-you-begin.html?cid=oth&campid=iags_install&source=installer?cid=oth&campid=iags_install&source=installer
2.4 拓展:gfortran的安装
其实linux下ifort安装比较麻烦,不过gfortran很好安装,如果代码对于软件适用的话,可以考虑安装gfortran,具体如下,打开终端窗口,输入以下内容可自动安装:
Redhat系统输入:sudo yum install gcc-gfortran
Ubantu系统输入:sudo apt-get install gfortran
参考链接:https://www.bilibili.com/video/BV1x4411b7Sn?p=2
gfortran中关于编译和链接的方式与ifort中的语法基本一致,只要把命令语句开头的ifort改为gfortran即可,但是可能没有-O2这种了
第三章 ifort的基本使用
本章主要介绍如何在Linux系统下完成对Fortran代码的编译和链接,并获得和运行可执行程序,这里编译和链接由ifort来完成
3.1 ifort常用命令行参数如下
(1) -o :输出文件命名(这里小o是output的缩写)
(2) -I :include路径
(3) -L :lib路径
(4) -l :包含的lib名
(5) -c :仅生成目标文件(*.o),不链接(这里小c是compile的缩写)
(6) -On :其中n=0,1,2,3,代表编译器优化选项,n=0关闭编译器优化,n=3使用最激进的优化,这里我们一般使用-O2即可。(另外注意这里是大O,是Optimization的缩写)
3.2 具体编译、链接的过程
3.2.1 简单的编译链接
(1) 在文件夹空白处右键,选中open in terminal,这样即可打开终端
(2) 创建.f90文件:终端输入touch main.f90后回车,会在当前路径下自动创建一个空白的main.f90文件,双击该文件打开后输入代码;
(3) 再输入ifort -c -O2 main.f90 sub.f90后回车,会自动进行编译,得到Main.o和Sub.o两个文件,.o表示object文件,在windows系统下编译也会有这个文件;
(4) 再输入ifort main.o sub.o -o hello,此代码是将两个对象文件链接成可执行程序,这个可执行程序为hello,没有后缀名;
(5) 再输入./hello,然后回车即可运行该可执行程序。
图 2 编译&链接命令行
作为测试的Fortran代码如下
(1) Main.f90如下:
Program main
Implicit none
Write(*,*)”Hello World!”
Call hi
End
(2) Sub.f90如下:
Subroutine hi
Implicit none
Write(*,*)”Hello World! From Sub hi!”
End Subroutine hi
3.2.2 有module文件的编译链接
(1) 如果有module文件的话,需要先编译Module文件,因为主/子函数依赖于module文件,即编译时module文件名写在前,其他写在后。
(2) 若module文件和其他f90文件比较多,人工难以一个个比较依赖关系,也不想把每个文件名都敲一遍,此时可以使用命令:ifort -c -O2 *90
(3) 其中*90表示对该目录下所有后缀为.f90的文件进行编译,但是第一次使用这个命令会报错,因为没有指定module先编译,所以有的子函数文件就找不到依赖文件,但是总体都会编译,所以也会把module文件编译出来
(4) 再次用ifort -c -O2 *90这个命令进行编译时,因为上面已经进行了module文件的编译,所以这次编译时所有文件都可以找到依赖
(5) 需要注意的是:在windows下Fortran是不区分大小写的,尤其是文件夹名称的大小写,但是在Linux中,若.f90代码中涉及到文件路径是大写名称,但实际文件路径是小写名称,这时候会报错,说找不到文件,就是由于Linux区分大小写。