检查需要哪些库

Check which libraries are needed

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

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

我认为更好的方法是在 find 的帮助下将 readelf 与 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 插件(在运行时加载)的目录