Что может означать следующая ошибка компиляции gcc и почему в ней есть часть, которая выглядит как поврежденная кодировка? - PullRequest
0 голосов
/ 27 октября 2018

При попытке make программы на C я получаю следующую ошибку, что это может означать и почему четвертая строка содержит вопросительные знаки?

C:\xxxxx\yyyyy\zzzz>make
cc gcc -I.   -c -o facetrain.o facetrain.c
process_begin: CreateProcess(NULL, cc gcc -I. -c -o facetrain.o facetrain.c, ...) failed.
make (e=2): ?e? e??a? d??at? ? e??es? t?? ?a????s╡???? a??e??? ap? t? s?st?╡a.
make: *** [<builtin>: facetrain.o] Error 2

Makefile
Как вы можете заметить, если вы посмотрите на исходный код (я предоставляю ссылку ниже), я изменил компилятор в cflag, чтобы он соответствовал компилятору mingw.

CFLAGS=gcc -I.
LFLAGS=

facetrain: facetrain.o imagenet.o backprop_initr.o pgmimage.o
    $(CC) ${LFLAGS} facetrain.o imagenet.o backprop_initr.o pgmimage.o \
          -o facetrain -lm

hidtopgm: hidtopgm.o pgmimage.o backprop_initr.o
    $(CC) ${LFLAGS} hidtopgm.o pgmimage.o backprop_initr.o \
          -o hidtopgm -lm

outtopgm: outtopgm.o pgmimage.o backprop_initr.o
    $(CC) ${LFLAGS} outtopgm.o pgmimage.o backprop_initr.o \
          -o outtopgm -lm

facetrain_init0: facetrain.o imagenet.o backprop_init0.o pgmimage.o
    $(CC) ${LFLAGS} facetrain.o imagenet.o backprop_init0.o pgmimage.o \
          -o facetrain_init0 -lm

backprop_initr.o: backprop.c backprop.h
    $(CC) ${CFLAGS} -c backprop.c
    mv backprop.o backprop_initr.o

backprop_init0.o: backprop.c backprop.h
    $(CC) ${CFLAGS} -c -DINITZERO backprop.c
    mv backprop.o backprop_init0.o

Остальная часть исходного кода:
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/theo-8/faceimages/code/

Окружающая среда: Windows 10 Uning MinGW, gcc -v:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls
Thread model: win32
gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)

1 Ответ

0 голосов
/ 27 октября 2018

Я не могу объяснить ваши проблемы с кодировкой, но вашу ошибку легко объяснить:

CFLAGS=gcc -I.

Вы добавили «gcc» к флагам, а затем вызвали компилятор следующим образом:

$(CC) ${CFLAGS} ...

так, как вы можете видеть из команды make print, вы получаете:

cc gcc -I.  ...

в качестве строки компиляции.

Вы должны установить компилятор отдельно:

CC = gcc
CFLAGS = -I.
...