温馨提示×

centos如何连接fortran库

小樊
39
2026-09-12 04:40:21
栏目: 智能运维

在 CentOS 上“连接 Fortran 库”通常涉及 编译、链接 Fortran 静态库/动态库,或 在 C/C++ 中调用 Fortran 库。下面按常见场景说明。


一、CentOS 安装 Fortran 编译器

1. 安装 gfortran

sudo yum install gcc-gfortran

验证:

gfortran --version

二、使用 Fortran 库(Fortran 程序调用 Fortran 库)

1. 编译 Fortran 库(静态库)

gfortran -c mylib.f90
ar rcs libmylib.a mylib.o

2. 使用库编译主程序

gfortran main.f90 -L. -lmylib -o main

说明:

  • -L.:库路径
  • -lmylib:链接 libmylib.a

三、使用 Fortran 动态库(.so)

1. 生成动态库

gfortran -fPIC -shared mylib.f90 -o libmylib.so

2. 编译程序

gfortran main.f90 -L. -lmylib -o main

3. 运行时找不到库

export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
./main

或:

sudo cp libmylib.so /usr/lib64/
sudo ldconfig

四、C/C++ 调用 Fortran 库(常见)

Fortran 库(example.f90)

subroutine add(a, b, c) bind(c)
  use iso_c_binding
  real(c_double), intent(in) :: a, b
  real(c_double), intent(out) :: c
  c = a + b
end subroutine add

编译:

gfortran -c example.f90
ar rcs libexample.a example.o

C 程序(main.c)

extern void add_(double*, double*, double*);

int main() {
    double a=1, b=2, c;
    add_(&a, &b, &c);
    return 0;
}

编译(关键)

gcc main.c -L. -lexample -lgfortran -o main

⚠️ 必须加 -lgfortran


五、常见问题

1. 找不到 -lgfortran

sudo yum install gcc-gfortran

2. 符号名问题

Fortran 默认加下划线:

add → add_

推荐用:

bind(c)

3. 64 位系统库路径

  • /usr/lib64
  • /lib64

六、示例总结命令

sudo yum install gcc-gfortran
gfortran -fPIC -shared mylib.f90 -o libmylib.so
gfortran main.f90 -L. -lmylib -o main
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./main

如果你能说明:

  • 是 Fortran 调 Fortran
  • 还是 C/C++ 调 Fortran
  • 库是 .a 还是 .so

我可以给你更精确的命令示例。

0 踩