Здание мерцало на окнах с минг - PullRequest
28 голосов
/ 15 мая 2011

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

Я пробовал:

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

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

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

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

Ответы [ 8 ]

47 голосов
/ 15 мая 2011

Чтобы собрать его с помощью 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 с необходимыми исполняемыми файлами и библиотеками

17 голосов
/ 26 ноября 2012

У меня все работает (с 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.

6 голосов
/ 03 августа 2011

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

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

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

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

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

5 голосов
/ 23 мая 2013

Система сборки 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
1 голос
/ 17 сентября 2013

Вот как VLC создает glew (статический) на mingw:

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

См. Также http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Windows#GLEW

и шаг 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 кажется слабым ...)

1 голос
/ 11 ноября 2012

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

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

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

0 голосов
/ 01 февраля 2016

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

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

0 голосов
/ 15 мая 2011

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

...