不能在Android编译的avahi [英] can't compile avahi on android

查看:335
本文介绍了不能在Android编译的avahi的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在交叉编译一个新手,我被分配任务使用Android补丁的http://的avahi。组织/票/ 354 编译内核的avahi到Android。 NDK建造的avahi配置的V = 1是成功的,但是当我跑:NDK建造V = 1 NDK_LOG = 2 APP_ABI =armeabi armeabi-V7A,它给人吨警告,也使错误的socket.o

任何建议表示欢迎。

错误:     /主页/若若/软件/ android- NDK-R8B /平台/ Android为14 /弓臂的/ usr /在include / linux / if.h中:85:12:警告:逗号的枚举列表末尾[-pedantic]     /home/ruoruo/Software/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/linux/if.h:90:22:警告:逗号的枚举列表末尾[-pedantic]     /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:68:8:错误:重新定义结构in6_pktinfo     /主页/若若/软件/ Android的NDK-R8B /平台/ Android为14 /弓臂/ usr / include目录/ Linux的/ipv6.h:21:8:注意:原来这里定义 /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:在函数'avahi_mdns_mcast_join_ipv6: /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:150:64:警告:​​未使用的参数'A'[-Wunused参数] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:在函数'avahi_recv_dns_packet_ipv4: /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:647:9:警告:变量found_addr设置,但不使用[-Wunused,但是设置变量] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:在函数'avahi_recv_dns_packet_ipv6: /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:809:24:警告:​​变量found_iface设置,但不使用[-Wunused,但是设置变量] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:809:9:警告:变量found_ttl设置,但不使用[-Wunused,但是设置变量] 令: * 的[/home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/obj/local/armeabi/objs/avahi-core/socket.o]错误1

下面是我的Andr​​oid.mk

  LOCAL_PATH:= $(叫我-DIR)

包括$(CLEAR_VARS)

AVAHI_TOP:= /家庭/若若/软件/ Android的NDK-R8B /样本/ avahi_exports / JNI
配置:=配置
CONFIGURE_LDFLAGS:= -lc -ldl

AVAHI_BUILT_SOURCES:= \
    的avahi-普通/ Android.mk \
    Avahi这个核心/ Android.mk \
    的avahi-客户uninstalled.pc \
    Avahi这个客户端/ Android.mk \
    的avahi-utils的/ Android.mk \
    的avahi-油嘴/ Android.mk \
    的avahi-能说会道,uninstalled.pc \
    的avahi-的GObject / Android.mk \
    的avahi-的GObject-uninstalled.pc \
    的avahi守护/ Android.mk

的avahi配置的,真正的:
    CD $(AVAHI_TOP); \
#CC =$(CONFIGURE_CC)\
#CFLAGS =$(CONFIGURE_CFLAGS)\
#LD = $(TARGET_LD)\
    LDFLAGS =$(CONFIGURE_LDFLAGS)\
#CPP = $(CONFIGURE_CPP)\
#CPPFLAGS =$(CONFIGURE_CPPFLAGS)\
#PKG_CONFIG_LIBDIR = $(CONFIGURE_PKG_CONFIG_LIBDIR)\ 17
#PKG_CONFIG_TOP_BUILD_DIR = $(PKG_CONFIG_TOP_BUILD_DIR)\
    $(AVAHI_TOP)/ $(配置)主机=臂的Linux androideabi \
    --disable-NLS  - 禁用GTK  - 禁用gtk3 \
     - 禁用DBUS  - 禁用蟒蛇\
     - 禁用xmltoman --with-XML =无\
     - 禁用巧舌如簧 - 禁用的GObject  - 禁用QT3  - 禁用的Qt4 \
     - 禁用GDBM  - 禁用libdaemon \
    --with-发行=无 - 禁用核心文档\
     - 禁用Werror
    回声make文件之前
    在$(AVAHI_BUILT_SOURCES)文件;做 \
       RM -f $$文件和放大器;&安培; \
        让-C $$(目录名$$文件)$$(基名$$文件); \
    做完

    的avahi-配置:的avahi配置的实

    .PHONY:的avahi配置的

    CONFIGURE_TARGETS + =的avahi配置的

    #包括所有的子目录...
    #-include $(AVAHI_TOP)/avahi-common/Android.mk
    #-include $(AVAHI_TOP)/avahi-client/Android.mk
    -include $(AVAHI_TOP)/avahi-core/Android.mk
    #-include $(AVAHI_TOP)/avahi-daemon/Android.mk
    #-include $(AVAHI_TOP)/avahi-glib/Android.mk
    #-include $(AVAHI_TOP)/avahi-gobject/Android.mk
    #-include $(AVAHI_TOP)/avahi-utils/Android.mk

#generate libavahi.so和libavahi.a
LOCAL_MODULE:= avahi_static
LOCAL_MODULE_FILENAME:= libavahi
-include $(BUILD_STATIC_LIBRARY)

LOCAL_MODULE:= avahi_shared
LOCAL_MODULE_FILENAME:= libavahi
-include $(BUILD_SHARED_LIBRARY)
 

解决方案

您已经下载的补丁是没有及时更新。最新的NDK,R8B,包含文件的Linux / ipv6.h 而无法在早期版本的NDK中找到。不幸的是这种变化NDK,欢迎,因为它是从来没有被记录在案。

这意味着你必须撤销补丁,以 socket.c 文件,通过删除线

  67的#ifdef __BIONIC__
68结构in6_pktinfo {
69结构in6_addr ipi6_addr;
70 INT ipi6_ifindex;
71};
72 #ENDIF
73
 

的avahi核心/ socket.c 文件。

I am a newbie in cross compilation and I was assigned the task to use the android patch http://avahi.org/ticket/354 to compile avahi core to android. ndk-build avahi-configure V=1 was successful, but when I ran: ndk-build V=1 NDK_LOG=2 APP_ABI="armeabi armeabi-v7a", it gives tons of warning and also make error on socket.o

Any suggestion is welcomed.

Error: /home/ruoruo/Software/android- ndk-r8b/platforms/android-14/arch-arm/usr/include/linux/if.h:85:12: warning: comma at end of enumerator list [-pedantic] /home/ruoruo/Software/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/linux/if.h:90:22: warning: comma at end of enumerator list [-pedantic] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:68:8: error: redefinition of 'struct in6_pktinfo' /home/ruoruo/Software/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/linux /ipv6.h:21:8: note: originally defined here /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c: In function 'avahi_mdns_mcast_join_ipv6': /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:150:64: warning: unused parameter 'a' [-Wunused-parameter] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c: In function 'avahi_recv_dns_packet_ipv4': /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:647:9: warning: variable 'found_addr' set but not used [-Wunused-but-set-variable] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c: In function 'avahi_recv_dns_packet_ipv6': /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:809:24: warning: variable 'found_iface' set but not used [-Wunused-but-set-variable] /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni/avahi-core/socket.c:809:9: warning: variable 'found_ttl' set but not used [-Wunused-but-set-variable] make: * [/home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/obj/local/armeabi/objs/avahi-core/socket.o] Error 1

Here is my Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

AVAHI_TOP := /home/ruoruo/Software/android-ndk-r8b/samples/avahi_exports/jni
CONFIGURE := configure
CONFIGURE_LDFLAGS := -lc -ldl

AVAHI_BUILT_SOURCES := \
    avahi-common/Android.mk \
    avahi-core/Android.mk \
    avahi-client-uninstalled.pc \
    avahi-client/Android.mk \
    avahi-utils/Android.mk \
    avahi-glib/Android.mk \
    avahi-glib-uninstalled.pc \
    avahi-gobject/Android.mk \
    avahi-gobject-uninstalled.pc \
    avahi-daemon/Android.mk

avahi-configure-real:
    cd $(AVAHI_TOP) ; \
#    CC="$(CONFIGURE_CC)" \
#    CFLAGS="$(CONFIGURE_CFLAGS)" \
#    LD=$(TARGET_LD) \
    LDFLAGS="$(CONFIGURE_LDFLAGS)" \
#    CPP=$(CONFIGURE_CPP) \
#    CPPFLAGS="$(CONFIGURE_CPPFLAGS)" \
#    PKG_CONFIG_LIBDIR=$(CONFIGURE_PKG_CONFIG_LIBDIR) \17
#    PKG_CONFIG_TOP_BUILD_DIR=$(PKG_CONFIG_TOP_BUILD_DIR) \
    $(AVAHI_TOP)/$(CONFIGURE) --host=arm-linux-androideabi \
    --disable-nls --disable-gtk --disable-gtk3 \
    --disable-dbus --disable-python \
    --disable-xmltoman --with-xml=none \
    --disable-glib --disable-gobject --disable-qt3 --disable-qt4 \
    --disable-gdbm --disable-libdaemon \
    --with-distro=none --disable-core-docs \
    --disable-Werror
    echo "before make file"
    for file in $(AVAHI_BUILT_SOURCES); do \
       rm -f $$file && \
        make -C $$(dirname $$file) $$(basename $$file) ; \
    done

    avahi-configure: avahi-configure-real

    .PHONY: avahi-configure

    CONFIGURE_TARGETS += avahi-configure

    #include all the subdirs...
    #-include $(AVAHI_TOP)/avahi-common/Android.mk
    #-include $(AVAHI_TOP)/avahi-client/Android.mk
    -include $(AVAHI_TOP)/avahi-core/Android.mk
    #-include $(AVAHI_TOP)/avahi-daemon/Android.mk
    #-include $(AVAHI_TOP)/avahi-glib/Android.mk
    #-include $(AVAHI_TOP)/avahi-gobject/Android.mk
    #-include $(AVAHI_TOP)/avahi-utils/Android.mk

#generate libavahi.so and libavahi.a
LOCAL_MODULE    := avahi_static
LOCAL_MODULE_FILENAME := libavahi
-include $(BUILD_STATIC_LIBRARY)

LOCAL_MODULE    := avahi_shared
LOCAL_MODULE_FILENAME := libavahi
-include $(BUILD_SHARED_LIBRARY)

解决方案

The patch you have downloaded is not up-to-date. The latest NDK, r8b, contains the file linux/ipv6.h which could not be found on the earlier versions of NDK. Unfortunately this change to NDK, welcome as it is, has never been documented.

This means that you must undo the patch to socket.c file, by removing the lines

67  #ifdef __BIONIC__ 
68  struct in6_pktinfo { 
69      struct in6_addr ipi6_addr; 
70      int ipi6_ifindex; 
71  }; 
72  #endif 
73   

from avahi-core/socket.c file.

这篇关于不能在Android编译的avahi的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆