EGL链接错误

5
我正在尝试在Ubuntu Trusty系统上使用g++ 4.9.1连接一个非常简单的GLES2和EGL程序,我正在使用mesa库。但是我遇到了EGL函数的链接错误。
test.cpp:(.text+0x342): undefined reference to `eglGetDisplay'
test.cpp:(.text+0x389): undefined reference to `eglInitialize'
test.cpp:(.text+0x40f): undefined reference to `eglCreateContext'
test.cpp:(.text+0x458): undefined reference to `eglCreatePbufferSurface'
test.cpp:(.text+0x49e): undefined reference to `eglMakeCurrent'

我正在使用以下命令编译test.cpp:

g++ -std=c++0x -Wall -Werror -lEGL -lGLESv2 -o test test.cpp 

我尝试过更改库的顺序,但问题依旧。这里是否有我遗漏的库?
我已经运行了readelf -Ws /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so,所有必需的函数都已定义。
2个回答

5

我通过将C++文件编译为目标文件,然后作为单独的步骤进行链接来解决了这个问题。我不确定为什么这种方法有效,而单行编译却无法解决问题。

g++ -std=c++0x -Wall -Werror -c -o test.o test.cpp 
g++ -o test test.o -lGLESv2 -lEGL

我已向社区提出问题,试图弄清楚原因:单个命令编译和链接失败,分步骤可行

5
你应该将库放在命令行的末尾。
g++ -std=c++0x -Wall -Werror -o test test.cpp -lEGL -lGLESv2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接