Я пытаюсь собрать gstreamer_ndk_bundle под Ubuntu 12.4, и у меня ничего не получается! Я установил все пакеты "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!
Я попытался заставить gstremaer_ndk_bundle собрать его с исходниками из папки /home/marko/glib-2.33.1/
, которую я скомпилировал/установил, экспортировав следующие переменные окружения:
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
Но в обоих случаях потерпел неудачу.
- Как узнать, какой glib используется при компиляции gstreamer, и установить правильный?
- Как заставить gstreamer_ndk_bundle использовать исходные коды glib из папки, которую я распаковал/настроил/установил, а не системные или какие-либо другие, которые он использует?
- Я где-то читал, что мне нужен
gstreamer-devel
пакет, если я продолжаю получать эту ошибку во время компиляции. Где я могу найти этот пакет?! Не могу его найти в Google... - Кто-нибудь КОГДА-НИБУДЬ собрал gstreamer_ndk_bundle и выжил, чтобы рассказать об этом?
решение1
Я установил --enable-debug=no
флаг в glib/Android.mk
. И ошибка ссылки исчезла. Попробуйте это. P.S. Вам нужно начать ./setup.sh
с перенастройки всех пакетов.