- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为什么在使用GLEW 1.10.0时出现分段错误? (我在问题的底部提供了系统的详细信息。)
我下载并编译了GLEW。编译(全部完成)和安装(sudo make install.all)均有效,并且未显示任何错误。 GLEW库安装在/usr/lib64/libGLEW.so.1.10.0中。
我创建了一个使用GLEW和glfw3(3.0.3)的简单OpenGL测试程序(见下文)。当程序使用已安装的GLEW lib时,会发生分段错误。当我在测试程序中使用GLEW源代码时,该程序将运行。
但是,如果我加载着色器,然后使用glGetProgramInterfaceiv查询编译的OpenGL程序,我将再次遇到分段错误。
细节:
细分错误发生在
运行glewinfo
运行visualinfo
测试程序(详细信息如下)
调用glGetProgramInterfaceiv(详细信息如下)
使用gdb的glewinfo的堆栈跟踪
#0 0x00007ffff6d5fca0 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff51b32f6 in __driCreateNewScreen_20050727 () from /usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so
#2 0x00007ffff7557c92 in ?? () from /usr/lib64/libGL.so.1
#3 0x00007ffff7553ea1 in ?? () from /usr/lib64/libGL.so.1
#4 0x00007ffff75540ce in glXChooseVisual () from /usr/lib64/libGL.so.1
#5 0x0000000000454883 in glewCreateContext ()
#6 0x000000000043b224 in main ()
#0 0x00007ffff6d5fca0 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff51b32f6 in __driCreateNewScreen_20050727 () from /usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so
#2 0x00007ffff7557c92 in ?? () from /usr/lib64/libGL.so.1
#3 0x00007ffff7553ea1 in ?? () from /usr/lib64/libGL.so.1
#4 0x00007ffff75540ce in glXChooseVisual () from /usr/lib64/libGL.so.1
#5 0x000000000040237b in CreateContext ()
#6 0x000000000040103e in main ()
#include <GL/glew.h>
#include <GLFW/glfw3.h>
int main()
{
glfwInit();
GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", NULL,
NULL);
glfwMakeContextCurrent(window);
glewInit();
glfwTerminate();
}
g++ -o "Basic" "main.cpp" -lglfw3 -lGLEW -lGL -lX11 -lrt -lXxf86vm -lXrandr
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64
Thread [1] 16728 [core: 2] (Suspended : Signal : SIGSEGV:Segmentation fault)
0x7ffff65e5ca0
__driCreateNewScreen_20050727() at 0x7ffff3de52f6
0x7ffff7645c92
glXQueryVersion() at 0x7ffff763d0aa
_glfwInitContextAPI() at 0x40c580
_glfwPlatformInit() at 0x408855
glfwInit() at 0x404829
main() at main.cpp:7 0x403819
#0 0x00007ffff65e5ca0 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff3de52f6 in __driCreateNewScreen_20050727 () from /usr/lib/x86_64-linux-gnu/dri/fglrx_dri.so
#2 0x00007ffff7980c92 in ?? () from /usr/lib64/libGL.so.1
#3 0x00007ffff79780aa in glXQueryVersion () from /usr/lib64/libGL.so.1
#4 0x000000000040c580 in _glfwInitContextAPI ()
#5 0x0000000000408855 in _glfwPlatformInit ()
#6 0x0000000000404829 in glfwInit ()
#7 0x0000000000403819 in main ()
#include <glew.h>
g++ -I"./" -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "main.cpp"
g++ -I"./" -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"glew.d" -MT"glew.d" -o "glew.o" "glew.c"
g++ -o Basic ./glew.o ./main.o -lGL -lX11 -lXrandr -lXxf86vm -lrt -lglfw3 -lXi
export LD_LIBRARY_PATH=/usr/local/lib
(gdb) backtrace
#0 0x0000000000000000 in ?? ()
#1 0x000000000042ec18 in main () at ../main.cpp:54
最佳答案
我的直觉:原因是纯64位库和32位库之间的混淆。
关于:分段错误
如果
将libGLEW移出/ usr / lib64(例如移至/ tmp文件夹),然后
然后例如导出LD_LIBRARY_PATH = / tmp(而不是导出LD_LIBRARY_PATH = / usr / lib64)
然后分割错误消失(测试程序运行,glewinfo和visualinfo工作)
/ usr / lib64中的某些原因导致了问题。
我碰到了该页面AMD 13.1 64 bit drivers and the libGL.so.1 error,该页面解释了AMD安装程序将libGL.so文件放置在何处
安装程序会将lib文件放在/ usr / lib64中。但是,如果有Ubuntu,则64位库位于/ usr / lib中。我做了以下事情来解决我的问题。
卸载驱动程序
须藤./amd-driver-installer-catalyst-13.1-legacy-linux-x86.x86_64.run --uninstall
删除/ usr / lib64文件夹
须藤rm -Rf / usr / lib64
创建一个指向/ lib / usr的符号链接/ usr / lib64
须藤ln -s / usr / lib / usr / lib64
重新安装驱动程序
须藤./amd-driver-installer-catalyst-13.1-legacy-linux-x86.x86_64.run --force
重启
须藤重启
我不确定该符号链接是否是个好主意...
关于:glGetProgramInterfaceiv (GLAPI/glGetProgramInterface)
失败,因为它仅可用于OpenGL> = 4.3。我的卡是4.2。运行glewinfo还显示以下内容:
GL_ARB_program_interface_query: MISSING
-------------------------------
glGetProgramInterfaceiv: MISSING
glGetProgramResourceIndex: MISSING
glGetProgramResourceLocation: MISSING
glGetProgramResourceLocationIndex: MISSING
glGetProgramResourceName: MISSING
glGetProgramResourceiv: MISSING
关于c++ - GLEW 1.10.0段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823888/
使用glew,我正在尝试链接简单的程序 #include int main (int argc, const char * argv[]) { glewInit(); return
我有一个动态库,在构建中包含glew.c,并使用GLEW_STATIC 构建。如果另一个库链接到同一个应用程序并且还以某种方式包含 GLEW,是否有可能由于单一定义规则而导致 Linux 出现问题?
我在 Macintosh 上使用终端。 要编译的命令是基本的: g++ -c String.cpp -o String.o g++ -c FileIO.cpp -o FileIO.o g++ -c
我正在配置一个与 glut 一起工作的程序来与 Qt 一起工作。我正在使用 Qt 5.1.1。并且似乎从 Qt4 到 Qt5 已经丢失了一些 openGL 功能。在我的程序中,我创建了一个 QOpen
我正在尝试做 openGLbook.com 教程。我收到这个常见错误: 1>------ Build started: Project: OpenGL Startup, Configurati
我读过这个 [1],但在我的例子中,CMake 说它找不到 glew。 我在 Windows 上,我的 CMake 模块文件夹中有一个 FindGLEW.cmake 文件,大概是在我安装 CMake-
这很奇怪。我想在我的 gl 程序中实现着色器。 但 GLEW 告诉我,我的系统不支持着色器: //glut init and glew init ... if (GLEW_ARB_vertex_sha
我想使用三角扇绘制不同的图形,但我不知道如何让程序绘制第二个图形。每次我想更改颜色或绘制新图形时,是否需要第二个 vertexShaderSource 和第二个 fragmentShaderSourc
我现在对尝试链接这个 glew 库感到非常沮丧 这是构建日志: g++ -o test.exe "src\\test.o" -lglew32 -lglfw -lglu32 -lopengl32 src
当我尝试在 CLion 中构建我的项目时,我遇到了来自 cmake 的链接错误。我已经尝试过其他线程所说的:将 opengl 放在最后,将 glu 放在第一位,更改我的 include 的顺序并设置
我遇到了这个问题,不知道该怎么办? 'abc.exe': Loaded 'D:\Windows\SysWOW64\nvoglv32.dll', Cannot find or open the PDB
我只是想使用 SDL 2.0 和 glew 1.9 创建一个 openGL 上下文 构建项目时没有问题,但在调试时,GLEW 初始化失败,我该怎么做才能解决这个问题? 我正在使用 visual stu
我正在使用以下代码检查是否有任何错误: glfwInit(); glewExperimental = GL_TRUE; if (glewInit() != 0) { std::cout <<
不知何故,我无法在多个头文件中获取 Glew。它只是提示 Gl 已经在 GLEW 之前定义了。 简而言之,我有以下文件结构: 程序.h 包括: , 和 "SceneManager.h" . 场景管理器
我的机器有 OpenGL 2.0,由于一些奇怪的原因,头文件 gl.h 不包含着色器函数。所以,有人建议我使用 GLEW。我正确安装了 GLEW,并将 glew32s 链接到我的编译器,我还在我的 m
我需要在 Ubuntu 11.10 中加载扩展。我尝试构建 GLEW,但出现以下奇怪错误... ~/Downloads/glew-1.7.0$ make cc -shared -Wl,-soname=
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我试图通过将源文件添加到我的项目来跳过 glew 的“链接步骤”,以使代码更加灵活(目标 32 位和 64 位,只需稍作修改)。我已经使用 Code::Blocks 和 mingw 32 位实现了 3
出于我无法理解的原因,glew 在静态链接时根本不起作用。有没有一种方法可以简单地将 glew.h、glxew.h、wglew.h 和 glew.c 源文件包含到我的项目中并使用 #include "
我编译了 GLEW 库。它似乎工作正常,这里是 make install 的输出: install -d -m 0755 "/usr/include/GL" install -m 0644 inclu
我是一名优秀的程序员,十分优秀!