我一直在尝试编译Apple for Linux开发的开源Bonjour框架。我遇到的问题是,当我使用选项os=linux
运行make时,我得到以下编译错误:
struct sockaddr没有名为“sa_len”的成员
我已经检查了struct sockddr,它确实没有名为sa_len的成员......所以我很困惑为什么框架会认为应该这样做!
有谁能请我就如何为Linux编译mDNSResponder给我一些建议?非常感谢。
答案 0 :(得分:1)
查看mDNSUNP.h可以看到,如果sa_len
不存在(例如在Linux上),则应定义宏NOT_HAVE_SA_LEN
。如果在您的情况下没有定义,请尝试将-DNOT_HAVE_SA_LEN
添加到编译标记中。
答案 1 :(得分:1)
sockaddr的Linux实现没有sa_len作为成员,但FreeBSD版本确实如此。 Apple的实现基于FreeBSD版本(parts of OS X pull from FreeBSD and NetBSD),因此您收到该错误的原因。您可以使用#ifdef
来解决它或添加编译标记,如前所述。