今天先简单写一下,以后完善一篇C-fortran互相调用要注意的要点 ^_^
如果.f文件中的函数含有下划线,两种编译器的处理是不同的,f77编译出的函数名称会添加两条下划线!!!而gfortran仍然只添加一条下划线做后缀。
如果使用mpif77的编译器,则要注意编译mpi的时候使用的是哪种fortran编译器。使用mpif77 -dumpversion查看。
!!!实验平台 CentOS 5.3
如果.f文件中的函数名称都不含有下划线“_”,f77与gfortran编译出的.o文件中,导出的外部符号是相同的,可以用nm命令查看。
例:add.f
subroutine add(a, b, sum)
……
$ f77 -c add.f
$ nm add.o
00... T add_
……
如果.f文件中的函数含有下划线,两种编译器的处理是不同的,f77编译出的函数名称会添加两条下划线!!!而gfortran仍然只添加一条下划线做后缀。
subroutine add_1(a, b, sum)
……
$ f77 -c add.f
$ nm add.o
00... T add_1__
……
$ gfortran -c add.f
$ nm add.o
00... T add_1_
……
如果使用mpif77的编译器,则要注意编译mpi的时候使用的是哪种fortran编译器。使用mpif77 -dumpversion查看。