Проблемы компиляции avahi в проект Android NDK

В последние несколько дней мне было трудно встраивать avahi в статическую или общую библиотеку для использования с существующим проектом Android NDK.

У нас есть несколько игр в магазинах приложений и игр, и моя задача - заставить мультиплеер работать в версиях для Android. В частности, задача включает в себя замену компонента Bonjour, чтобы эти игры могли соединяться друг с другом через zeroconf.

Исследования, казалось, показали, что avahi - это библиотека, которую мы ищем, но на данный момент я открыт для всего, что будет работать!

Я надеюсь, что кто-то здесь может либо помочь мне скомпилировать avahi, либо предложить другую более подходящую (и более простую в установке) библиотеку.

Проект использует android-ndk-r8b и собирается на OSX 10.7.4 с использованием командной строки (не eclipse)

Получил последний источник Avahi отсюда:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

доморощенные все необходимые библиотеки, чтобы получить ./configure для запуска без ошибок.

./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 запускается без видимых красных флажков.

сделать результаты в этой ошибке компиляции:

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

Понял, что он не собирается против библиотек android-ndk-r8b, не находит ipv6.h или что-то в этом роде.

Проверял мой файл .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

добавили --host = arm-linux-androideabi в список аргументов ./configure, что привело к этой ошибке:

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

Не смог понять, как получить список доступных типов хост-систем, поэтому изменил направление и решил попробовать собрать статическую библиотеку через файл Android.mk.

Нашел этот пост по созданию соответствующего файла Android.mk:не могу скомпилировать авахи на андроид

Понял, что у меня нет файлов Android.mk во всех подкаталогах.

Исследовал, загружал, собирал Androgenizer, чтобы попытаться преобразовать все файлы Makefile.am в файлы Android.mk.http://cgit.collabora.com/git/user/derek/androgenizer.git/

Не могу понять или найти информацию о том, как это сделать, хотя = /

Решил попробовать и создать свой собственный файл 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)

Приводит к ошибкам времени компиляции для 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':

И теперь я почти застрял.

Я попытался #if 0 'вывести файлы iface-linux.c и h, что привело к каскадному множеству других ошибок, так что, вероятно, это плохая идея.

Думая, что это может быть что-то, что я сделал не так с командой ./configure? Возможно, проблема с моим файлом Android.mk?

Я полагаю, что это должно быть чем-то, с чем имеет дело довольно много разработчиков, поэтому я, вероятно, что-то упускаю, потому что я не могу найти какую-либо хорошую информацию через Google.

Любая помощь приветствуется! Я также отослал это в список рассылки avhi, если я получу ответ там, я отправлю сюда для потомков.

Спасибо Крис

Ответы на вопрос(2)

Ваш ответ на вопрос