首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接器找不到-lglut

链接器找不到-lglut
EN

Stack Overflow用户
提问于 2011-12-28 04:45:52
回答 2查看 4.1K关注 0票数 2

所以。

我对Linux世界有点陌生(没有ide),所以请耐心等待。

The Issue

我构建了一个make文件,它将大约7-8个文件编译成.o文件,然后与几个库链接在一起。我已经在这些库上进行了定位,并且它们的dev对应物确实存在。问题是链接器拒绝找到它们。我的输出(如果我读得对的话)告诉我它看错了区域。我已经导出了我的LD_PATH以包含/usr/lib,这是我的.so.文件所在的地方。我的主要问题是,如何让-lglew-lglut相互连接?我还想把我的.o文件放在我的obj文件夹中,我的二进制文件放在一个bin文件夹中。这在makefile中有可能吗?如果是这样的话,根据我的制作文件,最好的方法是什么?

Makefile

代码语言:javascript
复制
  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 

输出

代码语言:javascript
复制
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

我很感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-28 05:15:46

您使用的是哪个Linux?看起来您使用的是64位系统,但试图编译32位应用程序(因为-m32编译器切换)。因此,要么删除-m32,要么安装32位开发库。它们可能被命名为freeglut-32位或类似的东西。

票数 2
EN

Stack Overflow用户

发布于 2011-12-28 04:51:13

/usr/bin/ld:在搜索-lglut时跳过不兼容的/usr/lib/libGlu.so

这意味着ld发现了libglut.so,但对-m32目标来说不是很好的候选。

PS,BIN是一个dir,为什么要将它放入编译对象中?

代码语言:javascript
复制
$(CC) $(LIBS) $(INCLUDEPATH) $(CFLAGS) -o $(TARGET)  $(DEPS) $(BIN)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8651961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档