Подтвердить что ты не робот

Построение окна на окнах с потоком

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

Я пробовал:

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

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

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

(альтернативно, если кто-нибудь может указать мне на сборку windows 32b, я был бы очень благодарен)

4b9b3361

Ответ 1

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

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|@[email protected]|/usr|g" \
                -e "s|@[email protected]|/usr/lib|g" \
                -e "s|@[email protected]|/usr/bin|g" \
                -e "s|@[email protected]|/usr/include/GL|g" \
                -e "s|@[email protected]|1.6.0|g" \
                -e "s|@[email protected]||g" \
                -e "s|@[email protected]|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|@[email protected]|/usr|g" \
                -e "s|@[email protected]|/usr/lib|g" \
                -e "s|@[email protected]|/usr/bin|g" \
                -e "s|@[email protected]|/usr/include/GL|g" \
                -e "s|@[email protected]|1.6.0|g" \
                -e "s|@[email protected]|-DGLEW_MX|g" \
                -e "s|@[email protected]|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 с желаемыми исполняемыми файлами и библиотеками

Ответ 2

Я получил его работу (с MinGW), я не компилировал glew32mx, а glew32. Просто загрузите источник .zip с веб-сайта GLEW. И помните, что создайте каталог "lib" в каталоге glew-1.xx, иначе он будет жаловаться на "не могу найти /lib/glew 32.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, потому что они скомпилированы с визуальной студией, я думаю.

Ответ 3

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

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

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

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

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

Ответ 4

Система сборки 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

Ответ 5

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

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

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

Ответ 6

Вот как VLC строит glew (статический) в mingw:

https://github.com/videolan/vlc/tree/master/contrib/src/glew (они применяют этот патч). У Guess 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 (похоже, что они просто просто строят все вручную, glew Makefile кажется слабым...)

Ответ 8

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

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