使用gcc链接fortran和c ++二进制文件

时间:2011-04-14 12:16:21

标签: c++ gcc fortran

我可以使用gcc分别使用g ++或gfortran在c和c ++之间或c和fortran之间进行调用。但是如果我尝试在c ++和fortran之间进行过程调用,那么在使用g ++或gfortran编译时会出现错误,因为它们都不知道其他所需的库。如何链接使用c ++和fortran编写的源代码的项目?

$ cat print_hi.f90
subroutine print_hi() bind(C)
  implicit none
  write(*,*) "Hello from Fortran."
end subroutine print_hi

$ cat main.cpp
#include <iostream>

extern "C" void print_hi(void);

using namespace std;

int main() {
  print_hi();
  cout << "Hello from C++" << endl;
  return 0;
}
$ gfortran -c print_hi.f90 -o print_hi.o
$ g++ -c main.cpp -o main.o

我尝试使用g ++进行链接:

$ g++ main.o print_hi.o -o main
print_hi.o: In function `print_hi':
print_hi.f90:(.text+0x3f): undefined reference to `_gfortran_st_write'

以及有关未定义引用的其他错误。

和gfortran一起:

$ gfortran main.o print_hi.o -o main
main.o: In function `main':
main.cpp:(.text+0xf): undefined reference to `std::cout'

......等等。

如何使用gfortran和g ++库链接二进制文件?

1 个答案:

答案 0 :(得分:51)

你在寻找 g++ main.o print_hi.o -o main -lgfortran链接标准的Fortran库。