【发布时间】:2013-07-25 11:39:52
【问题描述】:
给定
文件/usr/lib/gstreamer-0.10/libgstffmpeg.so 存在
在 CMakeLists.txt 中进行更改
方法一 find_library()
find_library(GST_FFMPEG NAMES gstffmpeg PATHS /usr/lib/gstreamer-0.10/ )
...
target_link_libraries(MyLibraryOrMyExecutable ${GST_FFMPEG})
当我使用上述配置(方法 1)运行 make 时,出现以下错误
/bin/ld: 警告:libvpx.so.1,/usr/lib/i386-linux-gnu/libavcodec.so.53 需要,未找到(尝试使用 -rpath 或-rpath-link)
/bin/ld: 警告:libschroedinger-1.0.so.0,/usr/lib/i386-linux-gnu/libavcodec.so.53 需要,未找到(尝试使用 -rpath 或 - rpath 链接)
/bin/ld: 警告:libgsm.so.1,/usr/lib/i386-linux-gnu/libavcodec.so.53 需要,未找到(尝试使用 -rpath 或 -rpath-链接)
看起来添加的库依赖于更多未链接的库!我可以在 /usr/lib 中看到以上 3 个 .so 文件。因此,方法 1 的一种可能解决方案是再添加三个 find_library() 函数。对吧?
可能不是-This question 探讨上述可能解决方案中发现的问题
- 第一季度。有没有其他方法可以省去寻找 依赖库并链接它们?一种自动链接所有依赖库的方法?
方法2 link_directories()
link_directories(/usr/lib/gstreamer-0.10/)
target_link_libraries(MyLibraryOrMyExecutable gstffmpeg)
当我使用上述配置(方法 2)运行 make 时,出现以下错误
bin/ld: 找不到 -lgstffmpeg
- 第二季度。上述方法2如何解决问题?
- 第三季度。方法 1 或 2 哪个更好?
附:尝试阅读 cmake 的文档并在 SO 上进行搜索,但无法解决我的问题。 我尝试了两种方法,但都遇到了问题
【问题讨论】:
标签: cmake gstreamer dynamic-linking shared-libraries