【发布时间】:2020-06-17 22:50:38
【问题描述】:
我在 64 位 Windows 上使用 mingw,试图编译一个 fortran 程序。链接库时,返回错误:
E:/Users/Malcolm/netcdf-4.1.3-antho/lib\libnetcdf.a: member E:/Users/Malcolm/netcdf-4.1.3-antho/lib\libnetcdf.a(libnetcdf_la-stub.o) in archive is not an object
当我在存档文件上使用nm时,它说目标文件的文件格式无法识别:
e:\mingw-w64\mingw32\bin\nm.exe: libnetcdf_la-stub.o: File format not recognized ... 其余的目标文件等等。
如果我在使用 7zip 从存档中提取其中一个单独的目标文件后使用file,它会返回“ACB 存档数据”。
如果有帮助,下面是我的 Makefile 的编译器标志部分:
OUTPUTLIB = -LE:/Users/Malcolm/netcdf-4.1.3-antho/lib
OUTPUTOPT = -DNETCDF
LINKOPTS = -lnetcdf -lnetcdff
FC = gfortran
OPTS = -ffree-form -ffree-line-length-none -O3 -finline-functions -fopenmp -fconvert=big-endian
OPTS += -static-libgfortran -static-libgcc
OPTS += -Wl,-Bstatic,--whole-archive -lstdc++ -lpthread -lnetcdf -lnetcdff -lgomp -lquadmath -Wl,--no-whole-archive -Wl,--stack,2147483647, --verbose
CPP = cpp -C -P -traditional -Wno-invalid-pp-token -ffreestanding
在这个项目之前我没有使用过 mingw,所以我可能缺少一些基本的东西。
【问题讨论】:
-
libnetcdf.a是从哪里来的?您应该得到一个为相同目标架构(win32 或 win64)构建的版本,最好使用相同的 MinGW 编译器构建。 -
我是从别人那里得到的(谁在 win64 上做的)。我会问他们用什么编译器,谢谢你的建议。
标签: compiler-errors compilation fortran mingw gfortran