30

mingw を使用して Windows で glew をビルドするための正しいコマンドを誰か教えてもらえますか?

私が試してみました:

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

しかし、何千ものリンカ エラーが発生しています (参照がありません)。

残念ながら、メイクファイルにはUNIX専用のコマンドがたくさんあり、cygwinなどを使用していないため、Makeでビルドできません。

(代わりに、誰かが私に Windows 32b ビルドを教えてくれたら、とても感謝します)

4

8 に答える 8

48

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

于 2011-05-14T22:44:31.980 に答える
6

Glew ビルド システムは、 を使用して環境を自動的に検出しようとしますconfig/configure.guess。makeを指定することで、この動作をオーバーロードできます$SYSTEMconfig/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
于 2013-05-23T09:41:12.687 に答える
6

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

1)明らかに、ソースコードが必要になります;)

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

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

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

于 2011-08-03T19:42:52.450 に答える
1

VLC が mingw で glew (静的) をビルドする方法は次のとおりです。

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

于 2013-09-17T03:40:05.370 に答える
1

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

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

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

于 2012-11-11T06:50:00.577 に答える
0

GlewのメインWebサイトには、 32ビットおよび64ビットのWindowsシステム用のフロントページのバイナリへのリンクがあると思います。

于 2011-05-14T22:20:03.033 に答える
0

MingW がインストールされている場合は、Msys を実行して make を実行し、そこに make をインストールします。libs をコピーし、フォルダーを bin libs にインクルードし、MingW にフォルダーをインクルードすると、すべて正常に動作するはずです。

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

于 2016-02-01T05:23:11.757 に答える