我很高兴现代化一个旧的混合Fortran和C代码库。这个代码库的一个优点是Fortran被转换为C语言,然后编译成可执行文件。
我正致力于在代码库中获取Fortran源代码,以便使用英特尔Fortran编译器进行编译,并使用英特尔C编译器编译C源代码。
Fortran代码具有一个命名的公共块,它出现在许多.f文件中:
COMMON / SHCOM / IVAR1, IARY(40), IVAR2, ...
在原始的,已编译的程序中,C代码实际上分配了一个SysV样式的共享内存段(使用shmget()
和shmat()
),并将共享内存段的地址分配给C变量shcom_
。因为所有Fortran都被转换为C,并且公共块名称和C变量最终为相同的符号名称,所以公共块位于共享内存段中。
有没有办法用Fortran编译成.o文件,C编译成.o文件?也就是说,我可以欺骗编译器让comon块在SysV共享内存段中吗?