在Ubuntu上,Fortran代碼可以通過使用ISO C Binding來調用C語言函數。這允許Fortran程序調用C庫中的函數,反之亦然。以下是如何在Ubuntu上設置Fortran項目以調用C語言函數的步驟:
安裝必要的編譯器: 確保你已經安裝了gfortran和gcc。你可以使用以下命令來安裝它們:
sudo apt update
sudo apt install gfortran gcc
編寫C語言函數:
創建一個C語言源文件,例如example.c
,并實現你想要調用的函數。
// example.c
#include <stdio.h>
void hello_from_c() {
printf("Hello from C!\n");
}
創建Fortran接口文件:
創建一個Fortran接口文件,例如example.f90
,在這個文件中聲明你想要調用的C函數。使用bind(C)
屬性來確保Fortran和C之間的調用約定一致。
! example.f90
interface
subroutine hello_from_c() bind(C, name="hello_from_c")
end subroutine hello_from_c
end interface
program call_c_from_fortran
call hello_from_c()
end program call_c_from_fortran
編譯C代碼: 使用gcc編譯C源文件為對象文件。
gcc -c example.c -o example.o
編譯Fortran代碼并鏈接C對象文件: 使用gfortran編譯Fortran源文件,并將C對象文件鏈接到Fortran程序中。
gfortran -c example.f90 -o example.o
gfortran example.o example.o -o call_c_from_fortran
注意:在這個步驟中,我們將Fortran和C的對象文件都編譯為.o
文件,然后將它們鏈接在一起。如果你的C函數有返回值或者使用了參數,你需要確保Fortran接口塊正確地聲明了這些參數和返回類型。
運行Fortran程序: 現在你可以運行編譯好的Fortran程序,它將調用C語言函數。
./call_c_from_fortran
你應該會看到輸出:
Hello from C!
這就是在Ubuntu上使用Fortran調用C語言函數的基本過程。如果你需要傳遞參數或者處理更復雜的數據類型,你可能需要使用iso_c_binding
模塊中提供的額外工具和類型定義。