在CentOS上,Fortran程序可以通過使用ISO C Binding來調用C語言函數。ISO C Binding是Fortran 2003標準的一部分,它提供了一種標準化的方式來調用C語言函數。以下是一些基本步驟來展示如何在Fortran中調用C語言函數:
編寫C語言函數:
首先,你需要有一個C語言函數。例如,創建一個名為example.c
的文件,內容如下:
#include <stdio.h>
void hello_from_c() {
printf("Hello from C!\n");
}
編譯C代碼為共享庫:
使用gcc
編譯器將C代碼編譯為共享庫(.so
文件)。
gcc -fPIC -c example.c -o example.o
gcc -shared -o libexample.so example.o
這將生成libexample.so
共享庫。
編寫Fortran代碼:
創建一個Fortran文件(例如example.f90
),并使用ISO C Binding來聲明和調用C函數。
program call_c_from_fortran
use iso_c_binding, only: c_void
implicit none
interface
subroutine hello_from_c() bind(c, name="hello_from_c")
import c_void
! No arguments and no return value
end subroutine hello_from_c
end interface
call hello_from_c()
end program call_c_from_fortran
編譯Fortran代碼并鏈接共享庫:
使用gfortran
編譯器編譯Fortran代碼,并鏈接之前生成的共享庫。
gfortran -o example_fortran example.f90 -L. -lexample
這里的-L.
指定庫文件的搜索路徑為當前目錄,-lexample
鏈接名為libexample.so
的庫。
運行Fortran程序:
確保共享庫在運行時可以被找到。你可以通過設置LD_LIBRARY_PATH
環境變量來實現這一點。
export LD_LIBRARY_PATH=.
./example_fortran
這將輸出:
Hello from C!
通過以上步驟,你就可以在CentOS上使用Fortran調用C語言函數了。請注意,Fortran和C在參數傳遞和數據類型上有一些差異,因此在編寫接口時要特別小心。使用ISO C Binding可以幫助你處理這些差異。