所以。
我对Linux世界有点陌生(没有ide),所以请耐心等待。
The Issue
我构建了一个make文件,它将大约7-8个文件编译成.o文件,然后与几个库链接在一起。我已经在这些库上进行了定位,并且它们的dev对应物确实存在。问题是链接器拒绝找到它们。我的输出(如果我读得对的话)告诉我它看错了区域。我已经导出了我的LD_PATH以包含/usr/lib,这是我的.so.文件所在的地方。我的主要问题是,如何让-lglew和-lglut相互连接?我还想把我的.o文件放在我的obj文件夹中,我的二进制文件放在一个bin文件夹中。这在makefile中有可能吗?如果是这样的话,根据我的制作文件,最好的方法是什么?
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我很感谢你的帮助。
发布于 2011-12-28 05:15:46
您使用的是哪个Linux?看起来您使用的是64位系统,但试图编译32位应用程序(因为-m32编译器切换)。因此,要么删除-m32,要么安装32位开发库。它们可能被命名为freeglut-32位或类似的东西。
发布于 2011-12-28 04:51:13
/usr/bin/ld:在搜索-lglut时跳过不兼容的/usr/lib/libGlu.so
这意味着ld发现了libglut.so,但对-m32目标来说不是很好的候选。
PS,BIN是一个dir,为什么要将它放入编译对象中?
$(CC) $(LIBS) $(INCLUDEPATH) $(CFLAGS) -o $(TARGET) $(DEPS) $(BIN)https://stackoverflow.com/questions/8651961
复制相似问题