为Linux编译mDNSResponder?

时间:2011-09-28 10:27:09

标签: linux compilation bonjour

我一直在尝试编译Apple for Linux开发的开源Bonjour框架。我遇到的问题是,当我使用选项os=linux运行make时,我得到以下编译错误:

  

struct sockaddr没有名为“sa_len”的成员

我已经检查了struct sockddr,它确实没有名为sa_len的成员......所以我很困惑为什么框架会认为应该这样做!

有谁能请我就如何为Linux编译mDNSResponder给我一些建议?非常感谢。

2 个答案:

答案 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来解决它或添加编译标记,如前所述。