2014-10-28 2 views
6

Я пытался использовать LibVLC для Android, и я выполнил инструкции по адресу https://wiki.videolan.org/AndroidCompile и получил его, чтобы он отлично работал для ARM. Однако, при попытке скомпилировать его x86, я установил:Построение LibVLC для x86

экспорт ANDROID_ABI = x86

и затем компилируются таким же образом, но теперь у меня есть проблема, как он не компилируется. Вот усеченный журнал сборка:

~/vlc-android$ sh compile.sh 
VLC source found 
Building tools 
You are ready to build VLC and its contribs 
Building the contribs 
Generating EGL pkg-config file 
Generating GLESv2 pkg-config file 
Guessing build system... x86_64-linux-gnu 
Creating configuration file... config.mak 
Bootstrap completed. 

... 

config.status: executing libtool commands 
Type "make; make install" to compile and install Speex 
cd speexdsp && make install 
make[1]: Entering directory `/home/user/vlc-android/vlc/contrib/contrib-android-i686-linux-android/speexdsp' 
Making install in libspeexdsp 
make[2]: Entering directory `/home/user/vlc-android/vlc/contrib/contrib-android-i686-linux-android/speexdsp/libspeexdsp' 
    CC  resample.lo 
In file included from resample.c:104:0: 
resample_neon.h:142:21: error: redefinition of 'inner_product_single' 
static inline float inner_product_single(const float *a, const float *b, unsigned int len) 
        ^
In file included from resample.c:100:0: 
resample_sse.h:40:21: note: previous definition of 'inner_product_single' was here 
static inline float inner_product_single(const float *a, const float *b, unsigned int len) 
        ^
make[2]: *** [resample.lo] Error 1 
make[2]: Leaving directory `/home/user/vlc-android/vlc/contrib/contrib-android-i686-linux-android/speexdsp/libspeexdsp' 
make[1]: *** [install-recursive] Error 1 
make[1]: Leaving directory `/home/user/vlc-android/vlc/contrib/contrib-android-i686-linux-android/speexdsp' 
make: *** [.speexdsp] Error 2 

Насколько я могу судить, в этом проекте по какой-то причине оба ARM заголовки и заголовки SSE в настоящее время включены, вызывая ошибку переопределения. Тем не менее, я не знаю, почему и что попытаться исправить. Любые предложения будут высоко ценится.

ответ

0

Autoconf выглядит не совсем правильно, x86 build не имеет ничего общего с набором инструкций NEON, поэтому не следует включать resample_neon.h. Я не нашел причину, но пока для быстрого решения, откройте resample.c под ../vlc-android/vlc/contrib/contrib-android-i686-linux-android/speexdsp/libspeexdsp и удалите следующие строки:

... 
#ifdef _USE_NEON 
#include "resample_neon.h" 
#endif 
... 

затем повторно запустите compile.sh, вы должны получить рабочую APK для x86 эмулятора/устройство.

+0

Я действительно сделал git pull и обновил весь пакет vlc-android, и проблема исчезла. Я попытался вытащить предыдущую фиксацию, когда я первоначально клонировал репо, и ваше исправление действительно сработало. Таким образом, похоже, что это зафиксировано в одном из коммитов. Благодаря! –

Смежные вопросы