首页 > 解决方案 > 在树莓派上编译钴时遇到错误

问题描述

在 ninja 上为 raspberry pi 编译钴时,我收到如下错误:

undefined reference to symbol 'eglCreateImageKHR'

这是完整的跟踪:

[1/1] LINK cobalt FAILED: cobalt /home/mi07/work/raspitools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ @cobalt.rsp /home/mi07/work/raspitools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: obj/starboard/raspi/2/../shared/open_max/starboard_platform.decode_target_create.o: undefined reference to symbol 'eglCreateImageKHR' /home/mi07/work/raspitools/sysroot/opt/vc/lib/libbrcmEGL.so: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed.

我用谷歌搜索并在这个网站上找到了一些相关的文章。

根据这篇文章,错误可能是libssl1.0-dev不在那里。我查了一下,发现是libssl-dev。用 libssl1.0-dev 替换它,但错误仍然存​​在。

有人可以告诉我出了什么问题吗?

标签: raspberry-pininjacobalt

解决方案


eglCreateImageKHR() 是 EGL 扩展EGL_KHR_image。自从 Cobalt 编译后,头文件似乎声明了扩展,但链接的 EGL 库没有定义它。令人惊讶的是,只有 eglCreateImageKHR() 丢失了,而 eglDestroyImageKHR 也没有。

无论如何,我建议尝试更新 EGL 库,但我不熟悉 raspi 安装,因此无法告诉您具体细节。

或者,在 decode_target_create.cc 中注释掉对该函数的调用是安全的,因为 SbImageIsDecodeSupported() 总是为 raspi 返回 false(参见 image_is_decode_supported.cc),因此永远不应在平台上创建/销毁解码目标。(解码目标支持是 raspi 正在进行的一项工作。)


推荐阅读