检查需要哪些库

Check which libraries are needed

本文关键字:检查      更新时间:2023-10-16

如何检查哪些库需要链接到我的Android应用程序我的意思是,我得到了很多像error: undefined reference to 'function_name'这样的错误,我需要手动解决它们——在库名称中查找一些匹配项,并将它们添加到我的项目中。但它并不总是有效的,例如,现在我试图在Android上使用Gstreamer,并获得一些未解决的依赖项,我不知道这些函数位于哪个库中:

  • 未定义对"g_simple_proxy_resolver_new"的引用
  • 未定义对"gst_preset_get_type"的引用

那么,如何以及在哪里可以找到包含这些函数的库

我认为更好的方法是将readelf与grep一起使用,也许可以借助find。。

find . -type f -name "*.so" | while read file; do echo $file; readelf -Ws $file | grep gst_preset_get_type; done 

输出:

./ext/alsa/.libs/libgstalsa.so ./ext/theora/.libs/libgsttheora.so    
./ext/cdparanoia/.libs/libgstcdparanoia.so ./ext/libvisual/.libs
/libgstlibvisual.so ./ext/ogg/.libs/libgstogg.so
49: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gst_preset_get_type
518: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gst_preset_get_type 
...
./gst/encoding/.libs/libgstencodebin.so
37: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gst_preset_get_type
232: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gst_preset_get_type

您可以在/usr/lib左右进行搜索。.

也许你也缺少一些插件?尝试设置变量GST_PLUGINS_PATH,该变量应指向包含gstreamer插件(在运行时加载)的目录