g ++链接器:/usr/lib/libGL.so.1:无法读取符号:无效操作
Posted
技术标签:
【中文标题】g ++链接器:/usr/lib/libGL.so.1:无法读取符号:无效操作【英文标题】:g++ linker: /usr/lib/libGL.so.1: could not read symbols: Invalid operation 【发布时间】:2010-08-13 12:40:27 【问题描述】:我正在尝试在 Ubuntu 10.04 下构建一个非常简单的 OpenGL 应用程序(我有一个 32 位系统)。
当我尝试编译文件时,我收到错误消息:
g++ -L/usr/lib simple.cpp -lglut
/usr/bin/ld: /tmp/ccoPczAo.o: undefined reference to symbol 'glEnd'
/usr/bin/ld: note: 'glEnd' is defined in DSO //usr/lib/libGL.so.1 so try adding it to the linker command line
//usr/lib/libGL.so.1: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
有人知道我做错了什么吗?
【问题讨论】:
与您的问题并不真正相关,但我看到您使用的是 glEnd(),自 GL3 以来已弃用。如果您正在开始 OpenGL 编程,我建议您开始使用带有“核心配置文件”的 GL3+。旧的 OpenGL 不仅速度慢,而且非常有限。 【参考方案1】:您需要在命令行中包含 opengl 库以及 glut 库/。 尝试将 -lGL 添加到命令行的末尾
g++ -L/usr/lib simple.cpp -lglut -lGL
【讨论】:
谢谢。它部分解决了我的问题,所以我可以完成剩下的工作(还必须添加-lGLU
)。
任何人都可以解释为什么它打印/usr/lib/libGL.so.1: could not read symbols: Invalid operation
?看起来它试图读取丢失的库,但失败了。【参考方案2】:
编译
g++ main.cpp -o main.bin -lGL -lGLU -lglut
或尝试OpenGL primer 的以下make 文件,它非常紧凑。 这个帮助我运行了我的 Hello world OpenGL。 感谢OpenGL Primer
CC = g++
SRC = main.cpp imageloader.cpp
LIBS = -lGL -lGLU -lglut
EXEC = cube.bin
all:
$(CC) $(SRC) -o $(EXEC) $(LIBS)
clean:
rm -rf $(EXEC) *~
【讨论】:
以上是关于g ++链接器:/usr/lib/libGL.so.1:无法读取符号:无效操作的主要内容,如果未能解决你的问题,请参考以下文章
未定义对向量<String> g++ 链接器错误的引用[重复]
链接器错误,使用 g++ 链接到由 gcc 编译的库,未定义对该函数的引用