Здание мерцало на окнах с минг

Кто-нибудь может дать мне правильную команду для сборки glew на windows с mingw?

Я пытался:

gcc -static glew.c glewinfo.c visualinfo.c -I / path / to / glew / include

но я получаю тысячи ошибок компоновщика (отсутствует ссылка).

Я не могу собрать с Make, потому что, к сожалению, в make-файле много команд только для unix, и у меня нет cygwin или чего-то еще на работе.

(В качестве альтернативы, если кто-то может указать мне на сборку Windows 32B, я был бы очень признателен)

8 ответов

Решение

Чтобы собрать его с помощью MinGW, вы должны сделать (скопировано из журнала make, с небольшими изменениями и дополнительными пояснениями):

mkdir lib/
mkdir bin/
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a    -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

# Create library file: lib/libglew32.dll.a
ar cr lib/libglew32.a src/glew.o

# Create pkg-config file (optional if you just want a lib)
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@|1.6.0|g" \
                -e "s|@cflags@||g" \
                -e "s|@libname@|GLEW|g" \
                < glew.pc.in > glew.pc

gcc -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

# Create library file: lib/libglew32mx.dll.a
ar cr lib/libglew32mx.a src/glew.mx.o

# Create pkg-config file (optional if you just want a lib)
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@|1.6.0|g" \
                -e "s|@cflags@|-DGLEW_MX|g" \
                -e "s|@libname@|GLEWmx|g" \
                < glew.pc.in > glewmx.pc

# Make the glew visualinfo program. Skip this if you want just the lib
gcc -c -O2 -Wall -W -Iinclude  -o src/glewinfo.o src/glewinfo.c
gcc -O2 -Wall -W -Iinclude  -o bin/glewinfo.exe src/glewinfo.o -Llib  -lglew32 -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
gcc -c -O2 -Wall -W -Iinclude  -o src/visualinfo.o src/visualinfo.c
gcc -O2 -Wall -W -Iinclude  -o bin/visualinfo.exe src/visualinfo.o -Llib  -lglew32 -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

После этого у вас должна быть папка lib и папка bin с нужными исполняемыми файлами и библиотеками.

Я получил это работает (с MinGW), я не скомпилировал glew32mx, но вместо этого glew32. Просто скачайте исходный файл.zip с сайта GLEW. И не забудьте создать каталог "lib" в каталоге glew-1.xx, в противном случае он будет жаловаться на "not find /lib/glew32.dll" при попытке скомпилировать вторую строку кода ниже:

    gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c

    gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

    # Create glew32.dll
    ar cr lib/libglew32.a src/glew.o

Предварительно скомпилированные двоичные файлы на веб-сайте GLEW не работают с mingw, потому что я думаю, что они скомпилированы с Visual Studio.

Система сборки Glew пытается автоматически определить вашу среду, используя config/configure.guess, Вы можете перегрузить это поведение, указав $SYSTEM делать. Увидеть config/Makefile.* для всех поддерживаемых конфигураций сборки. Glew уже включает конфигурацию для использования MinGW.

Так что, возможно, вам просто нужно запустить:

make SYSTEM=linux-mingw64

На моей Fedora мне пришлось настроить некоторые переменные config/Makefile.linux-mingw64:

  • $CC а также $LD было не правильно
  • Мне пришлось указать каталог, в котором располагались системные библиотеки
  • Я должен был указать, где должен быть установлен Glew

Наконец я запустил:

make SYSTEM=linux-mingw64                                       \
  CC=x86_64-w64-mingw32-gcc LD=x86_64-w64-mingw32-ld            \
  LDFLAGS.EXTRA=-L/usr/x86_64-w64-mingw32/sys-root/mingw/lib    \
  GLEW_DEST=/usr/x86_64-w64-mingw32/sys-root/mingw install

Нашел другое решение, которое работает с Code::Blocks. шаги:

1) Очевидно, вам понадобится glew исходный код;)

2) Откройте файлы glew_shared.dsw с помощью C::B, отредактируйте свойства проекта и, для каждой цели сборки, измените ее тип с "Динамическая библиотека" на "Статическая библиотека" (она находится прямо здесь, на вкладке "Цели сборки"). Вы также можете изменить каталог назначения, поскольку файлы DLL встроены в каталог bin\.

3) Добавьте #define GLEW_STATIC перед #include

4) Постройте цель, и это приведет к созданию правильной libglew32*.a.

В дополнение к ответу PoL0, я обнаружил, что эти шаги сработали для меня с MinGW на Code::Blocks, но с одним дополнительным изменением, которое требуется - в проекте по умолчанию много "вздора" от Microsoft в "других параметрах" в параметрах компилятора. Очистите их, и вы получите хороший результат (параметры сборки проекта -> [каждая цель] -> вкладка настроек компилятора -> вложенная вкладка других параметров)

Вы также можете включить оптимизацию для двух целей выпуска (-O2 или -O3).

Кроме того, статические библиотеки будут встроены в "bin" по умолчанию, вам нужно будет скопировать / переместить их, чтобы заменить библиотеки в "lib".

Вот как VLC собирает glew (static) на mingw:

https://github.com/videolan/vlc/tree/master/contrib/src/glew (они применяют этот патч). Думаю, у glew нет простого варианта "просто" построить статическую библиотеку, поэтому вам придется преодолевать различные препятствия (или компилировать вручную, как на это указывают другие ответы).

Смотрите также http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Windows

и шаг 7 здесь: http://sujatha-techie.blogspot.com/2008/10/glsl-with-mingw.html

Вот как это делает mx: https://github.com/mxe/mxe/blob/master/src/glew.mk (похоже, они в основном просто все вручную строят, Makefile в glew кажется слабым...)

Я считаю, что основной сайт Glew имеет ссылку на двоичные файлы на первой странице для 32-битных и 64-битных систем Windows.

Если у вас установлен MingW, просто запустите Msys, сделайте и сделайте установку там после завершения копирования библиотек и включения папок в библиотеки bin и включения папок в MingW, и все должно работать нормально.

простое и быстрое решение

Другие вопросы по тегам