2

32ビットのlibGLEW.soをビルドしようとしています。64ビットのLinuxを使用しています。MakefileのCFLAGSに-m32を追加しようとしました。

cc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude  -m32 -fPIC  -o tmp/linux/default/shared/glew.o -c src/glew.c
cc -shared -Wl,-soname=libGLEW.so.1.9 -o lib/libGLEW.so.1.9.0 tmp/linux/default/shared/glew.o -L/usr/X11R6/lib64 -L/usr/lib64 -lXmu -lXi -lGL -lXext -lX11 
/usr/bin/ld: i386 architecture of input file `tmp/linux/default/shared/glew.o' is incompatible with i386:x86-64 output
/usr/bin/ld: tmp/linux/default/shared/glew.o: file class ELFCLASS32 incompatible with ELFCLASS64
/usr/bin/ld: final link failed: File in wrong format
collect2: error: ld returned 1 exit status
make: *** [lib/libGLEW.so.1.9.0] Error 1

それが何を意味するのか正確にはわかりませんか?32ビットの.oファイルを作成しているように見えますが、64ターゲットとしてリンクしようとしていますか?これを修正するにはどうすればよいですか..-L/usr / X11R6/lib64と-L/usr / lib64が追加されるのを見ましたが、/ usr / X11R6/libをアドバタイズするmakeSYSTEM=gnuも実行してみました代わりに/usr/ libフォルダーがありますが、同じエラーが発生します。

4

1 に答える 1

2

わかりましたので、以下にリストされているパッケージが必要でした。-m32 を Makefile の CFLAGS と LDFLAGS の両方に追加し、-m32 を環境内の CFLAGS、CXXFLAGS、LDFLAGS に設定したことを確認してから、make を実行しました。

libx11-dev:i386
libxext-dev:i386
libxmu-dev:i386
libxi-dev:i386
libgl1-mesa-dev:i386

export CFLAGS='-m32'
export CXXFLAGS='-m32'
export LDFLAGS='-m32'
make 
于 2013-02-25T09:43:44.590 に答える