Problemy z kompilacją avahi do projektu Android NDK

W ciągu ostatnich kilku dni miałem trudności z budowaniem avahi w bibliotece statycznej lub współdzielonej do użytku z istniejącym projektem Android NDK.

Mamy kilka gier w sklepach App i Play, a moim zadaniem jest praca w trybie wieloosobowym w wersjach Androida. W szczególności zadanie polega na zastąpieniu komponentu Bonjour, aby te gry mogły łączyć się ze sobą za pomocą zerokonf.

Badania zdawały się wskazywać, że avahi jest biblioteką, której szukamy, ale w tym momencie jestem otwarty na wszystko, co zadziała!

Mam nadzieję, że ktoś tutaj może mi pomóc w kompilacji avahi lub zaproponować inną, bardziej odpowiednią (i łatwiejszą do zainstalowania) bibliotekę.

Projekt używa android-ndk-r8b i jest budowany na OSX 10.7.4 przy użyciu linii poleceń (nie eclipse)

Masz najnowsze źródło Avahi stąd:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

homebrewed wszystkie niezbędne biblioteki, aby uzyskać ./configure do uruchomienia bez błędów.

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-static --disable-mono --disable-monodoc  --disable-gdbm --disable-libdaemon --disable-nls --disable-gtk --disable-gtk3 --disable-python --disable-qt3 --disable-qt4 --enable-core-docs --with-distro=none

./configure działa bez widocznych czerwonych flag.

wykonaj wyniki w tym błędzie kompilacji:

socket.c: In function 'ipv6_pktinfo':
socket.c:271: warning: unused variable 'yes' [-Wunused-variable]
socket.c:270: warning: unused parameter 'fd' [-Wunused-parameter]
socket.c: In function 'avahi_send_dns_packet_ipv6':
socket.c:609: error: 'IPV6_PKTINFO' undeclared (first use in this function)
socket.c:609: error: (Each undeclared identifier is reported only once
socket.c:609: error: for each function it appears in.)
socket.c: In function 'avahi_recv_dns_packet_ipv6':
socket.c:869: error: 'IPV6_HOPLIMIT' undeclared (first use in this function)
socket.c:878: error: 'IPV6_PKTINFO' undeclared (first use in this function)
make[2]: *** [libavahi_core_la-socket.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Pomyślałem, że nie buduje się na lib-android-ndk-r8b ani nie znajduje ipv6.h lub czegoś takiego.

Sprawdzono mój plik .bash_profile.sh:

export PATH=/Users/Muy01/Projects/Development/Android/android-sdks/tools/:$PATH
export PATH=/Users/Muy01/Projects/Development/Android/android-sdks/platform-tools/:$PATH
export PATH=/Users/Muy01/Projects/Development/Android/android-ndk-r8b/:$PATH

dodano --host = arm-linux-androideabi do listy argumentów ./configure powodującej ten błąd:

checking host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized

Nie mogłem dowiedzieć się, jak uzyskać listę dostępnych typów systemów hostów, więc zmienił kierunek i postanowił spróbować zbudować statyczną libę za pomocą pliku Android.mk.

Znaleziono ten wpis podczas tworzenia odpowiedniego pliku Android.mk:nie można skompilować avahi na Androida

Zdałem sobie sprawę, że nie mam plików Android.mk we wszystkich podkatalogach.

Przebadano, pobrano, zbudowano, Androgenizer, aby spróbować przekonwertować wszystkie pliki Makefile.am na pliki Android.mk.http://cgit.collabora.com/git/user/derek/androgenizer.git/

Nie mogłem jednak znaleźć ani znaleźć informacji, jak to zrobić = /

Postanowiłem spróbować utworzyć mój własny plik Android.mk:

LOCAL_PATH := $(call my-dir)
ROOT_LOCAL_PATH :=$(call my-dir)

#Build avahi into a static lib
include $(CLEAR_VARS)
AVAHI_TOP := $(ROOT_LOCAL_PATH)/../avahi-0.6.31

MY_SOURCES := $(wildcard $(AVAHI_TOP)/avahi-core/*.c*)
MY_SOURCES += $(wildcard $(AVAHI_TOP)/avahi-common/*.c*)
LOCAL_C_INCLUDES := $(AVAHI_TOP)
LOCAL_SRC_FILES := $(MY_SOURCES:$(LOCAL_PATH)%=%)

LOCAL_MODULE    := avahi

include $(BUILD_STATIC_LIBRARY)

Powoduje błędy czasu kompilacji dla avahi-core / iface-linux.c: 33: 0:

/avahi-0.6.31/avahi-core/iface-linux.h:27:8: Redefinition of 'struct AvahiInterfaceMonitorOSDep'
/avahi-0.6.31/avahi-core/iface.h:46:16: Originally defined here
/avahi-0.6.31/avahi-core/iface-linux.h:33:9: Redeclaration of enumerator 'LIST_IFACE'
/avahi-0.6.31/avahi-core/iface.h:52:9: Previous definition of 'LIST_IFACE' was here
/avahi-0.6.31/avahi-core/iface-linux.h:34:9: Redeclaration of enumerator 'LIST_ADDR'
/avahi-0.6.31/avahi-core/iface.h:53:9: Previous definition of 'LIST_ADDR' was here
/avahi-0.6.31/avahi-core/iface-linux.h:35:9: Redeclaration of enumerator 'LIST_DONE'
/avahi-0.6.31/avahi-core/iface.h:54:9: Previous definition of 'LIST_DONE' was here
/jni//../avahi-0.6.31/avahi-core/iface-linux.c: In function 'netlink_callback':

A teraz utknąłem.

Próbowałem #if 0 na wyjściu z plików iface-linux.c ih, co spowodowało kaskadowe mnożenie się innych błędów, więc to zły pomysł.

Myśląc, że może to być coś, co zrobiłem źle w poleceniu ./configure? Może problem z moim plikiem Android.mk?

Sądzę, że to musi być coś, z czym ma do czynienia kilku programistów, więc prawdopodobnie czegoś mi brakuje, ponieważ nie mogę znaleźć żadnej dobrej informacji za pośrednictwem google.

Każda pomoc byłaby bardzo mile widziana! Wysłałem to również na listę dyskusyjną avhi, jeśli otrzymam tam odpowiedź, opublikuję tutaj dla potomności.

Dzięki, Chris

questionAnswers(2)

yourAnswerToTheQuestion