【发布时间】:2021-05-25 21:01:13
【问题描述】:
我正在为 Raspberry Pi 编写一个自定义视频播放器,它使用 ffmpeg 解码视频,并在 GDB 和 DRM 之上使用 OpenGL 来渲染它。
要在 Raspberry Pi 上解码视频,必须在启用 MMAL 的情况下编译 ffmpeg,因为这是硬件加速视频解码的推荐 API。
问题:
几乎所有的库都位于标准路径中,除了 MMAL,它位于 /opt/vc/lib/libmmal.so。
当然,大家首先想到的是,加-L/opt/vc/lib就行了,但没那么简单:
- 我还在我的程序中使用
/usr/lib/libEGL.so,由 Mesa 提供。 - 还有我不想使用的
/opt/vc/lib/libEGL.so,因为它是不适合我的情况的旧版实现。
如果我添加-L/opt/vc/lib,它将优先考虑该路径并选择错误的库/opt/vc/lib/libEGL.so。
有没有办法做类似-L/opt/vc/lib 的事情,但只针对一个特定的库,而对于其他库,它继续使用标准路径?或者有没有其他方法可以解决这个问题?
我尝试了-l/opt/vc/lib/libmmal.so 之类的方法,但没有奏效,我找不到太多帮助,因为这是一个非常具体的问题。
任何人都知道如何在 CMake 中做同样的事情。
【问题讨论】:
-
@Devolus 这不是我要处理的。我知道如何处理其他地方的图书馆。在这种情况下,那个人想要指定一个库的自定义路径,但是一旦他这样做了,就没有其他库会突然开始从同一个新位置链接。那是我的问题。我可以从自定义位置链接一个库,但随后更多库开始从该新位置链接,我不希望这样。
-
你不能将构建过程分成两个独立的子项目,一个获取一个路径,另一个获取普通库吗?
-
@Devolus 我不确定我该怎么做。我的项目由几个 .c 文件组成,它们链接到一个可执行文件中。在编译可执行文件后,在链接部分出现问题。你会怎么做?
-
当使用像
/opt/vc/lib/libmmal.so这样的绝对路径时,不要在它前面加上-l。
标签: c gcc linker shared-libraries ld