检查需要哪些库

时间:2016-04-14 17:28:07

标签: android c++ makefile gstreamer ld

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

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

那么,我如何以及在哪里可以找到包含这些功能的库?

1 个答案:

答案 0 :(得分:1)

我认为更好的方法是使用replf和grep,也许可以帮助查找..

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插件的目录(在运行时加载)