由于某些原因,我安装了 CentOS6,并且想要编译用 c++ 和 fortran 编写的文档。我发现我必须更改 gcc 版本,因为使用当前的 gcc-gfortran 编译器会出现一些错误。当前编译器的信息是 gcc-gfortran4.8,为了修复这个错误,我需要使用 gcc-gfortran 4.2 之前的版本。有人可以帮我解决这个问题吗,谢谢。
编译器更新来自(的信息https://github.com/gcc-mirror/gcc/blob/releases/gcc-4.3.0/libgfortran/runtime/memory.c):
- Runtime/memory.c (internal_realloc、allocate、allocate_array、deallocate):删除函数。
- gfortran.map (_gfortran_allocate、_gfortran_allocate_array、_gfortran_deallocate、_gfortran_internal_realloc):删除符号。
- libgfortran.h (error_codes):添加注释。
使用当前编译器的错误信息:
sdfReinit3d.F:(.text+0x388e): 未定义引用_gfortran_allocate64_array' sdfReinit3d.F:(.text+0x3af6): undefined reference to
gfortran_deallocate' sdfReinit3d.F:(.text+0x3b10): 对_gfortran_deallocate' /home/ce202025/SDFlib1/sample/../usr/local/sphere/lib/libSDF.a(sdfReinit3d.o): In function
sdf_reinit3d_weno的未定义引用':sdfReinit3d.F:(.text+0x3c2e): 对_gfortran_allocate64_array' sdfReinit3d.F:(.text+0x3e96): undefined reference to
_gfortran_deallocate 未定义引用' sdfReinit3d.F:(.text+0x3eb0): 对 `_gfortran_deallocate' 未定义引用
答案1
您可以同时安装任意数量的 gcc 版本。
CentOS6,f77、g77: yum install compat-gcc-34-g77
→ 提供/usr/bin/{gcc34, f77, g77}
gfortran41:gcc41-c++-4.1.2-1.el6.x86_64.rpmhttps://drive.google.com/file/d/1ITNcvvDO_7yYAnYw0yVTqtC9k3QCwMcR/view?usp=sharing→ 提供/usr/bin/{gcc41, g++41, gfortran41}
gfortran42:gcc42-c++-4.2.4-21.1.el6.x86_64.rpmhttps://drive.google.com/file/d/1yoa9Qvi5XXUv4amfptzNeyeclrpgGxMC/view?usp=sharing→ 提供/usr/bin/{gcc42, g++42, gfortran42}