加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 综合聚焦 > Linux > 正文

linux – 为什么简单地链接GL导致段错误?

发布时间:2021-03-30 13:48:04 所属栏目:Linux 来源:互联网
导读:我正在Linux上编写一个OpenGL应用程序,我可以轻松地使用GLUT创建一个窗口,但是一旦我与-lGL链接,我就会得到一个段错误.会有什么想法导致这种情况?即使使用-Wall,我也不会收到任何编译器警告或错误.只有当我运行该程序时才会给我一个段错误.我以前从未使用过g

我正在Linux上编写一个OpenGL应用程序,我可以轻松地使用GLUT创建一个窗口,但是一旦我与-lGL链接,我就会得到一个段错误.会有什么想法导致这种情况?

即使使用-Wall,我也不会收到任何编译器警告或错误.只有当我运行该程序时才会给我一个段错误.

我以前从未使用过gdb,但这些信息有用吗?

(gdb) run
Starting program: /home/drjrm3/code/dc/c++/dc.exe 

Program received signal SIGSEGV,Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) backtrace
#0  0x0000000000000000 in ?? ()
#1  0x00007ffff32e8291 in ?? () from /lib/x86_64-linux-gnu/libdl.so.2
#2  0x00007ffff32e86d7 in ?? () from /lib/x86_64-linux-gnu/libdl.so.2
#3  0x00007ffff32e8198 in dlsym () from /lib/x86_64-linux-gnu/libdl.so.2
#4  0x00007ffff78ef6be in ?? () from /usr/lib/nvidia-340/libGL.so.1
#5  0x00007ffff78d3516 in ?? () from /usr/lib/nvidia-340/libGL.so.1
#6  0x00007ffff7dea0fd in ?? () from /lib64/ld-linux-x86-64.so.2
#7  0x00007ffff7dea223 in ?? () from /lib64/ld-linux-x86-64.so.2
#8  0x00007ffff7ddb30a in ?? () from /lib64/ld-linux-x86-64.so.2
#9  0x0000000000000001 in ?? ()
#10 0x00007fffffffc9f0 in ?? ()
#11 0x0000000000000000 in ?? ()
(gdb) 

我把它归结为一个最小的例子现在我仍然对发生的事情感到困惑:

#include 

我用g -g -o dc.exe xdriver.cpp -I /usr/include / GL -lglut -lGL -DLINUX -Wall编译,当我运行代码时,它什么都没打印出来……我只是得到了Segmentation fault(核心倾销).令我感到困惑的是它除了打印然后退出之外什么都不做……但不知何故它是段错误.

一旦我脱掉-lGL,我运行程序并打印出“我们得到了这么远……”然后退出.

最佳答案 在我自己遇到一个简单的OpenGL程序问题之后,我找到了一个解决方案here.

总而言之,仅仅将-pthread添加到编译器标志对我来说不起作用,因为我没有在任何地方使用libpthread,因此它实际上没有被链接.诀窍是强迫g认为我使用的是libpthread,因此通过将这个小片段添加到我的main.cpp文件来强制它链接:

#if defined(__unix__)

#include 

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读