です。リンカーは-lglut
私はLinuxデベロッパーの世界では少し新しくなっています(ideはありません)ので、気をつけてください。
問題は、私はその後、いくつかのライブラリと一緒にリンクされている.o
ファイルにおよそ7-8ファイルをコンパイル構築メイクファイルを持っています。私はこれらの図書館に所在しており、その開発者の対応者はです。が存在します。問題は、リンカーがそれらを見つけることを拒否していることです。私の出力(私がこれを正しく読んでいる場合)は、間違った場所を探していると私に伝えます。 をエクスポートして/usr/lib
を追加しました。これは私の.so.
ファイルです。私の主な質問は、-lglew
と-lglut
をどうやってリンクさせるのですか? .o
ファイルをobj
フォルダに、私のバイナリをbin
フォルダに入れたいと思います。これはメイクファイルで可能ですか?もしそうなら、私のmakeファイルを与えて、これを行うための最良のレシピは何ですか?
Makefileの
1 BIN = bin/
2 OBJ = obj/
3 TARGET = opengl_03
4 DEPS = main.o displayinit.o initializer.o algorithms.o matrix3f.o window.o vertex3.o
5 CC = g++
6 CFLAGS = -g -m32
7 LIBS = -lglut -lGLEW
8 INCLUDEPATH = -L/usr/include/ -L/usr/lib
9
10 $(TARGET) : $(DEPS)
11 $(CC) $(LIBS) $(INCLUDEPATH) $(CFLAGS) -o $(TARGET) $(DEPS) $(BIN)
12
13 displayinit.o : displayinit.cpp displayinit.h
14 $(CC) -c displayinit.cpp $(OBJ)
15 initializer.o : initializer.cpp initializer.h
16 $(CC) -c initializer.cpp $(OBJ)
17 algorithms.o : algorithms.cpp algorithms.h
18 $(CC) -c algorithms.cpp $(OBJ)
19 matrix3f.o : matrix3f.cpp matrix3f.h
20 $(CC) -c matrix3f.cpp $(OBJ)
21 vertex3.o : vertex3.cpp vertex3.h
22 $(CC) -c vertex3.cpp $(OBJ)
23 window.o : window.cpp window.h
24 $(CC) -c window.cpp $(OBJ)
25 main.o : main.cpp
26 $(CC) -c main.cpp $(OBJ)
27
28 clean:
29 rm $(DEPS)
30
31
出力
g++ -lglut -lGLEW -L/usr/include/ -L/usr/lib -g -m32 -o opengl_03 main.o displayinit.o initializer.o algorithms.o matrix3f.o window.o vertex3.o bin/
/usr/bin/ld: skipping incompatible /usr/lib/libglut.so when searching for -lglut
/usr/bin/ld: skipping incompatible /usr/lib/libglut.a when searching for -lglut
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../libglut.so when searching for -lglut
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../libglut.a when searching for -lglut
/usr/bin/ld: skipping incompatible /usr/lib/libglut.so when searching for -lglut
/usr/bin/ld: skipping incompatible /usr/lib/libglut.a when searching for -lglut
/usr/bin/ld: cannot find -lglut
/usr/bin/ld: cannot find -lGLEW
/usr/bin/ld: cannot find bin/: File format not recognized
collect2: ld returned 1 exit status
make: *** [opengl_03] Error 1
私は援助を感謝しています。
'-m32'を使って32ビット版をビルドしていますが、'/usr/lib/libglut.so'(そして他のglutライブラリ)が64ビットのライブラリであるようですね?参照するには 'file/usr/lib/libglut.so'コマンドを実行してください。 – birryree
http://stackoverflow.com/questions/4052542/gcc-m32-flag-usr-bin-ld-skipping-incompatible? – ibid