我正在尝试在 Ubuntu 12.4 下构建 gstreamer_ndk_bundle,但失败了!我已经安装了所有“glib-dev”软件包(名称中包含glib
和的软件包dev
),并且我还尝试从源代码编译/安装 glib 2.33.1(最新版本),但我总是收到此错误:
/home/marko/gstreamer_ndk_bundle/jni/../glib/gobject/gmarshal.c:149: undefined reference to `g_value_get_schar'
collect2: ld returned 1 exit status
make: *** [/home/marko/gstreamer_ndk_bundle/obj/local/armeabi/libgobject-2.0.so] Error 1
这意味着 glib 源没有 的定义g_value_get_schar
,而且由于该函数是在 glib 2.30.0 版本之后的某个地方引入的,所以我猜测我没有使用正确的 glib!
/home/marko/glib-2.33.1/
我尝试通过导出以下环境变量来强制 gstremaer_ndk_bundle 使用我编译/安装的文件夹中的源进行构建:
GLIB_GENMARSHAL=/home/marko/glib-2.33.1/gobject/glib-genmarshal
GLIB_COMPILE_SCHEMAS=/home/marko/glib-2.33.1/gio/glib-compile-schemas
我也进行了更改gmarshal.h
,以便它包含gmarshal.h
已安装的 glib 文件夹:
#ifndef _marko_glib_loaded
#define _marko_glib_loaded
#include "/home/marko/glib-2.33.1/gobject/gmarshal.h"
#endif
但两次都失败了。
- 我如何知道编译 gstreamer 时使用了哪个 glib 并安装正确的 glib?
- 我如何强制 gstreamer_ndk_bundle 使用我已解压/配置/安装的文件夹中的 glib 源而不是系统源或它使用的任何源?
- 我在某处读到,如果在编译时不断出现此错误,则需要
gstreamer-devel
软件包。我在哪里可以找到该软件包?!无法通过 Google 找到它... - 有没有人曾经构建过 gstreamer_ndk_bundle 并且活着讲述这个故事?
答案1
我--enable-debug=no
在 中设置了标志glib/Android.mk
。链接错误消失了。试试这个。PS 您必须开始./setup.sh
重新配置所有软件包。