web-dev-qa-db-ja.com

Mingwを使用したWindowsでの建物の輝き

Mingwを使用してWindowsでグローを作成するための正しいコマンドを教えてもらえますか?

私が試してみました:

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

しかし、私は何千ものリンカエラーを取得しています(参照がありません)。

残念ながら、makefileには多くのUNIX専用コマンドがあり、cygwinなど何も機能していないため、Makeでビルドすることはできません。

(あるいは、誰かが私にWindows 32bビルドを指すことができるなら、私は非常に感謝します)

28
user181351

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フォルダーが必要です。

47
Barak Itkin

(MinGWで)動作するようになりました。glew32mxはコンパイルせず、代わりにglew32をコンパイルしました。 GLEW Webサイトからソース.Zipをダウンロードするだけです。また、glew-1.xxディレクトリに「lib」ディレクトリを作成することを忘れないでください。そうしないと、以下のコードの2行目をコンパイルしようとしたときに「/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 Webサイトのプリコンパイル済みバイナリは、mingwでは動作しません。これは、Visual Studioでコンパイルされているためだと思います。

17
anon

Code :: Blocksで動作する別のソリューションを見つけました。手順:

1)明らかにソースコードをグローする必要があります;)

2)C :: Bでglew_shared.dswファイルを開き、プロジェクトプロパティを編集し、必要なビルドターゲットごとに、タイプを「ダイナミックライブラリ」から「スタティックライブラリ」に変更します(ビルドターゲットタブにあります)。 .dllファイルがbin \ディレクトリに組み込まれているため、宛先ディレクトリを変更することもできます。

3)#includeの前に#define GLEW_STATICを追加します

4)ターゲットをビルドすると、適切なlibglew32 * .aが作成されます

6
PoL0

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
Jezz

PoL0の答えに加えて、これらの手順はCode :: BlocksのMinGWで機能しますが、さらに1つの変更が必要であることがわかりました。これらをクリアすると、良い結果が得られます(プロジェクトビルドオプション-> [各ターゲット]->コンパイラ設定タブ->その他のオプションサブタブ)

2つのリリースターゲット(-O2または-O3)の最適化を有効にすることもできます。

さらに、静的ライブラリはデフォルトで「bin」に構築されます。「lib」にあるライブラリを置き換えるには、それらをコピー/移動する必要があります。

1
Riot

VLCが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 (それらは基本的にすべてを手動で構築するだけで、glewのMakefileは弱いようです...)

1
rogerdpack

mingWがインストールされている場合は、Msysを実行し、libのコピーが完了してそこにインストールを行い、bin libsにフォルダーを含め、MingWにフォルダーを含めれば、すべて正常に動作するはずです。

シンプルで高速なソリューション

0
hopjopper

メインの Glew website は、 2-bit および 64-bit Windowsシステムの場合、フロントページのバイナリへのリンクを持っていると思います。

0
Barak Itkin