2011-09-28 91 views
0

我一直在努力編譯Apple for Linux開發的開源Bonjour框架。我的問題是,使與該選項,當我運行os=linux我得到以下編譯錯誤:編譯mDNSResponder for Linux?

struct sockaddr has no member named 'sa_len'

我檢查的結構sockddr,它確實沒有sa_len命名成員...所以我混淆爲什麼框架認爲它應該這樣做!

任何人都可以請給我一些建議,我應該如何編譯Linux的mDNSResponder?非常感謝。

回答

0

查看mDNSUNP.h,可以看到如果sa_len不存在(例如在Linux上),應該定義一個宏NOT_HAVE_SA_LEN。如果未在您的案例中定義,請嘗試將-DNOT_HAVE_SA_LEN添加到您的編輯標誌。

0

sockaddr的Linux實現沒有sa_len作爲成員,但是FreeBSD版本沒有。 Apple的實施基於FreeBSD版本(parts of OS X pull from FreeBSD and NetBSD),因此您收到該錯誤的原因。按照之前的建議,您可以使用#ifdef來解決它或添加編譯標誌。