Сборка GLEW с MinGW-64 в MSYS2 завершилась неудачно - make: i686-w64-mingw32-ld: Команда не найдена - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок во всем этом.Папка GLEW находится на моем диске Windows, и я пытаюсь собрать ее с помощью MinGW-w64 из MSYS2 для использования в программе OpenGL.Свежая установка MSYS2 полностью обновлена ​​и выполняется из /MSYS2/mingw32.exe.Единственными дополнительными пакетами, установленными в MSYS2, являются git, mingw-w64-x86_64-gcc и base-devel.

$ make SYSTEM=linux-mingw-w64
i686-w64-mingw32-gcc -DGLEW_NO_GLU -DGLEW_BUILD -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/linux-mingw-w64/default/shared/glew.o -c src/glew.c
i686-w64-mingw32-ld -shared -soname libglew32.dll --out-implib lib/libglew32.dll.a     -o lib/glew32.dll tmp/linux-mingw-w64/default/shared/glew.o -nostdlib -lopengl32 -lgdi32 -luser32 -lkernel32
make: i686-w64-mingw32-ld: Command not found
make: *** [Makefile:122: lib/glew32.dll] Error 127

В Windows я могу посмотреть и найти i686-w64-mingw32-gcc.exe, расположенный в \MSYS2 \ mingw32 \ bin \, но i686-w64-mingw32-ld нигде нельзя найти в \ MSYS2 \

Если я введу только «make», который, как мне кажется, использует другую опцию SYSTEM =, я получуthis:

$ make
gcc -fno-builtin -DGLEW_NO_GLU -DGLEW_BUILD -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/shared/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a    -o lib/glew32.dll tmp/mingw/default/shared/glew.o -L/mingw/lib -nostdlib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x lib/glew32.dll
sed \
        -e "s|@prefix@|/usr|g" \
        -e "s|@libdir@|/usr/lib|g" \
        -e "s|@exec_prefix@|/usr/bin|g" \
        -e "s|@includedir@|/usr/include/GL|g" \
        -e "s|@version@|2.1.0|g" \
        -e "s|@cflags@||g" \
        -e "s|@libname@|glew32|g" \
        -e "s|@requireslib@|glu|g" \
        < glew.pc.in > glew.pc
gcc -fno-builtin -DGLEW_NO_GLU -DGLEW_STATIC -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/static/glew.o -c src/glew.c
ar rv lib/libglew32.a tmp/mingw/default/static/glew.o
a - tmp/mingw/default/static/glew.o
C:\MSYS2\mingw32\bin\ar.exe: creating lib/libglew32.a
strip -x lib/libglew32.a
gcc -fno-builtin -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/shared/glewinfo.o -c src/glewinfo.c
gcc -fno-builtin -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector -o bin/glewinfo.exe tmp/mingw/default/shared/glewinfo.o -Llib  -lglew32 -L/mingw/lib -nostdlib -lopengl32 -lgdi32 -luser32 -lkernel32
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x33): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x54): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x5c): undefined reference to `strlen'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x90): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0xb8): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0xed): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x109): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x111): undefined reference to `strlen'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x12d): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x152): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x187): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1a4): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1ac): undefined reference to `strlen'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1dc): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e9): undefined reference to `fflush'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e46e): undefined reference to `sscanf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e492): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e4aa): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e4c9): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e500): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e51f): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e544): more undefined references to `strcmp' follow
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e596): undefined reference to `strtol'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e5b5): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e5df): undefined reference to `strcmp'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e620): undefined reference to `memset'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x1e716): undefined reference to `memset'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text+0x142): undefined reference to `fflush'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x1d): undefined reference to `__main'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x98): undefined reference to `fopen'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0xba): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0xcf): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0xe4): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x10b): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x127): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x160): more undefined references to `fprintf' follow
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x177d): undefined reference to `_imp____acrt_iob_func'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x178f): undefined reference to `fclose'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x17af): undefined reference to `_imp____acrt_iob_func'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x17bf): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x17d3): undefined reference to `_imp____acrt_iob_func'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x17e3): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x1808): undefined reference to `_imp____acrt_iob_func'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x181c): undefined reference to `fprintf'
tmp/mingw/default/shared/glewinfo.o:glewinfo.c:(.text.startup+0x1838): undefined reference to `_imp____acrt_iob_func'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:181: bin/glewinfo.exe] Error 1

Итак, в GLEW git рекомендуется , чтобы исправить эту ошибку, чтобы я каким-то образом изменил Makefile, что я и сделал.После этого, если я запускаю только «make», мои / lib создаются, но мои объектные файлы в / src отсутствуют:

$ make
gcc -fno-builtin -DGLEW_NO_GLU -DGLEW_BUILD -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/shared/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a    -o lib/glew32.dll tmp/mingw/default/shared/glew.o -L/mingw/lib -nostdlib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x lib/glew32.dll
sed \
        -e "s|@prefix@|/usr|g" \
        -e "s|@libdir@|/usr/lib|g" \
        -e "s|@exec_prefix@|/usr/bin|g" \
        -e "s|@includedir@|/usr/include/GL|g" \
        -e "s|@version@|2.1.0|g" \
        -e "s|@cflags@||g" \
        -e "s|@libname@|glew32|g" \
        -e "s|@requireslib@|glu|g" \
        < glew.pc.in > glew.pc
gcc -fno-builtin -DGLEW_NO_GLU -DGLEW_STATIC -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/static/glew.o -c src/glew.c
ar rv lib/libglew32.a tmp/mingw/default/static/glew.o
a - tmp/mingw/default/static/glew.o
C:\MSYS2\mingw32\bin\ar.exe: creating lib/libglew32.a
strip -x lib/libglew32.a
gcc -fno-builtin -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/shared/glewinfo.o -c src/glewinfo.c
gcc -fno-builtin -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector -o bin/glewinfo.exe tmp/mingw/default/shared/glewinfo.o -Llib -lglew32 -L/mingw/lib  -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x bin/glewinfo.exe
gcc -fno-builtin -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector  -o tmp/mingw/default/shared/visualinfo.o -c src/visualinfo.c
gcc -fno-builtin -O2 -Wall -W -Iinclude -fno-builtin -fno-stack-protector -o bin/visualinfo.exe tmp/mingw/default/shared/visualinfo.o -Llib -lglew32 -L/mingw/lib  -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x bin/visualinfo.exe

Если я запускаю «make SYSTEM = linux-mingw-w64»после рекомендованного исправления выдает ту же ошибку, что и раньше, и ничего не создается.Я хочу построить с этой опцией, так как я собираюсь компилировать свой проект OGL, который вызывает GLEW, используя 32-битный MinGW-w64.

Вопросы:

  1. Почему отсутствует i686-w64-mingw32-lb и как его получить?

  2. Почему «make» без флага SYSTEM = не встраивает файлы .o в /SRC, но не дают ошибок?

...