我一直在努力編譯Apple for Linux開發的開源Bonjour框架。我的問題是,使與該選項,當我運行os=linux
我得到以下編譯錯誤:編譯mDNSResponder for Linux?
struct sockaddr has no member named 'sa_len'
我檢查的結構sockddr,它確實沒有sa_len命名成員...所以我混淆爲什麼框架認爲它應該這樣做!
任何人都可以請給我一些建議,我應該如何編譯Linux的mDNSResponder?非常感謝。
我一直在努力編譯Apple for Linux開發的開源Bonjour框架。我的問題是,使與該選項,當我運行os=linux
我得到以下編譯錯誤:編譯mDNSResponder for Linux?
struct sockaddr has no member named 'sa_len'
我檢查的結構sockddr,它確實沒有sa_len命名成員...所以我混淆爲什麼框架認爲它應該這樣做!
任何人都可以請給我一些建議,我應該如何編譯Linux的mDNSResponder?非常感謝。
查看mDNSUNP.h,可以看到如果sa_len
不存在(例如在Linux上),應該定義一個宏NOT_HAVE_SA_LEN
。如果未在您的案例中定義,請嘗試將-DNOT_HAVE_SA_LEN
添加到您的編輯標誌。
sockaddr的Linux實現沒有sa_len作爲成員,但是FreeBSD版本沒有。 Apple的實施基於FreeBSD版本(parts of OS X pull from FreeBSD and NetBSD),因此您收到該錯誤的原因。按照之前的建議,您可以使用#ifdef
來解決它或添加編譯標誌。