我正在try 编译一个用Fortran编写的软件,它还需要一些用C编写的库.该软件最初是在x86 Linux架构上编写的,但我正在try 用Apple Silicon(M1 Max)在我的Mac上编译它.我能够修改脚本和源代码以删除绝大多数错误和/或警告,但现在我不得不使用ranlib和ar来链接这些库.
编译时,生成的错误如下:
ar rv mapst.a \*.o
a - ispand.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive member: mapst.a(ispand.o) cputype (16777228) does not match previous archive members cputype (16777223) (all members must match)
rm -f ispand.o
ranlib mapst.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive member: mapst.a(ispand.o) cputype (16777228) does not match previous archive members cputype (16777223) (all members must match)
据我所知,问题出在编译器的标志上.目前,Makefile具有以下标志:
FTN = gfortran
FFLAGS = -O3 -Wuninitialized -fno-f2c -fno-automatic -fno-range-check -fno-backslash
CC = /usr/bin/gcc
CFLAGS = -c
将"-m64"添加到gfortran(顺便说一句,这是提供了brew 软件的GCC的编译器)标志中,没有任何变化,而向GCC标志中添加"-Arch Arm",会将体系 struct 从16777228更改为12,但无论如何错误仍然存在.
关于如何修改生成文件以编译软件,您有什么建议吗?