Почему MinGW не распознает мои объектные файлы при компиляции? - PullRequest
0 голосов
/ 18 июня 2020

Я использую mingw на 64-битной Windows, пытаюсь скомпилировать программу 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 ... et c для остальных объектных файлов.

Если я использую file в одном из отдельных объектных файлов после его извлечения из архива с 7zip он возвращает «данные архива 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 до этого проекта, поэтому может быть я что-то упускаю c.

1 Ответ

0 голосов
/ 19 июня 2020

Хорошо, я решил проблему. Я использовал mingw32, а также пробовал его на mingw-w64, не осознавая, что я установил 32-разрядную версию i686.

Я установил версию mingw x86_64, которая используется для скомпилировать библиотеки, которые я использовал, и он там работал.

...