一、安裝Fortran編譯器
在CentOS上構建Fortran項目前,需先安裝Fortran編譯器。推薦使用gfortran(GNU Fortran Compiler,開源免費)或Intel Fortran Compiler(商業版,性能更優)。
yum
包管理器安裝,命令如下:sudo yum update -y # 更新系統軟件包
sudo yum install epel-release -y # 安裝EPEL倉庫(提供額外軟件包)
sudo yum install gcc-gfortran -y # 安裝gfortran編譯器
安裝完成后,通過gfortran --version
驗證安裝(顯示版本信息則成功)。PATH
、LD_LIBRARY_PATH
),適用于需要高性能計算的場景。二、編寫與編譯Fortran代碼
.f90
(Fortran 90/95/2003/2008)或.f
(Fortran 77)擴展名的源文件,例如hello.f90
:program hello
implicit none ! 強制顯式聲明變量(避免拼寫錯誤)
print *, 'Hello, World!' ! 輸出語句
end program hello
gfortran
編譯源文件為可執行文件,命令如下:gfortran -o hello hello.f90 # 編譯并鏈接生成可執行文件'hello'
./hello # 運行程序(輸出'Hello, World!')
main.f90
依賴module1.f90
),需先編譯模塊文件(生成.mod
和.o
文件),再編譯主程序并鏈接:gfortran -c module1.f90 # 編譯模塊文件(生成module1.o和module1.mod)
gfortran -c main.f90 # 編譯主程序(生成main.o)
gfortran -o program main.o module1.o # 鏈接生成可執行文件
注意:模塊文件需在主程序編譯前生成,否則會報錯。三、使用Makefile管理項目
對于復雜項目(多個源文件、依賴庫),建議使用Makefile
自動化編譯流程。以下是一個通用示例:
# 編譯器與選項
FC = gfortran # 使用gfortran編譯器
FFLAGS = -Wall -g # 編譯選項:顯示所有警告(-Wall)、生成調試信息(-g)
# 源文件與目標文件
SRCS = main.f90 module1.f90 module2.f90 # 所有源文件
OBJS = $(SRCS:.f90=.o) # 替換為.o文件(如main.o)
TARGET = my_program # 可執行文件名
# 默認目標(生成可執行文件)
all: $(TARGET)
# 鏈接目標文件生成可執行文件
$(TARGET): $(OBJS)
$(FC) $(FFLAGS) -o $@ $^ # $@代表TARGET,$^代表所有OBJS
# 編譯每個源文件為目標文件
%.o: %.f90
$(FC) $(FFLAGS) -c $< -o $@ # $<代表當前源文件
# 清理生成的文件
clean:
rm -f $(OBJS) $(TARGET) # 刪除所有.o文件和可執行文件
使用方法:在終端運行make
(編譯項目)、make clean
(清理生成的文件)。
四、版本控制(Git)
使用Git管理源代碼,跟蹤變更、協作開發:
sudo yum install git -y
git init # 初始化本地倉庫
git add . # 添加所有文件到暫存區
git commit -m "Initial commit" # 提交初始版本
git clone https://github.com/username/repository.git
通過git push
、git pull
同步遠程倉庫代碼。五、調試與性能優化
gdb
(GNU Debugger)調試程序,步驟如下:
gfortran -g -o debug_program main.f90
gdb ./debug_program
run
(運行程序)、break main
(在main函數設置斷點)、next
(執行下一行)、print variable
(打印變量值)、quit
(退出)。-O2
:優化級別2(平衡編譯時間與性能,推薦使用);-O3
:優化級別3(更激進的優化,可能增加編譯時間);-march=native
:針對當前CPU架構優化(如-march=x86-64-v3
)。gfortran -O2 -o optimized_program main.f90
。六、代碼格式化與模塊化
gfortran
的格式化工具保持代碼風格一致:gfortran -C -o formatted_code main.f90 # -C選項格式化代碼(縮進、空格等)
module
)封裝可復用的函數/子程序,提高代碼可維護性。例如:! module1.f90(模塊文件)
module math_operations
implicit none
public :: square, cube ! 聲明公共函數
contains
function square(x) result(res)
real, intent(in) :: x
real :: res
res = x * x
end function square
function cube(x) result(res)
real, intent(in) :: x
real :: res
res = x * x * x
end function cube
end module math_operations
主程序調用模塊:! main.f90(主程序)
program main
use math_operations ! 使用模塊
implicit none
real :: num = 2.0
print *, 'Square:', square(num)
print *, 'Cube:', cube(num)
end program main
編譯時需先編譯模塊文件(gfortran -c module1.f90
),再編譯主程序。七、項目管理工具
使用項目管理工具跟蹤進度、分配任務:
八、文檔與注釋
!--
(單行注釋)或!* ... *
(多行注釋)添加注釋,說明函數/子程序的功能、參數含義。例如:! 計算兩個數的和
function add(a, b) result(sum)
real, intent(in) :: a, b ! 輸入參數:a和b
real :: sum ! 輸出結果:和
sum = a + b
end function add
Doxygen
生成代碼文檔(支持Fortran),步驟如下:
sudo yum install doxygen -y
;Doxyfile
配置文件(doxygen -g
);Doxyfile
(設置INPUT
為源文件目錄、EXTENSION_MAPPING
包含.f90
);doxygen Doxyfile
(生成HTML/PDF文檔)。