Компилирование mDNSResponder для Linux? - PullRequest
1 голос
/ 28 сентября 2011

Я пытался скомпилировать платформу Bonjour с открытым исходным кодом, разработанную Apple для Linux.У меня проблема в том, что когда я запускаю make с параметром os=linux, я получаю следующую ошибку компиляции:

struct sockaddr не имеет члена с именем 'sa_len'

Я проверил struct sockddr, и у него действительно нет члена с именем sa_len ... Поэтому я не понимаю, почему фреймворк думает, что он должен это делать!

Может кто-нибудь дать мне какой-нибудь совет относительнокак я должен компилировать mDNSResponder для Linux?Большое спасибо.

Ответы [ 2 ]

1 голос
/ 12 ноября 2014

Linux-реализация sockaddr не имеет sa_len в качестве члена, но версия FreeBSD делает. Реализация Apple основана на версии FreeBSD ( части OS X взяты из FreeBSD и NetBSD ), поэтому вы и получаете такую ​​ошибку. Вы можете использовать #ifdef, чтобы обойти это или добавить флаг компиляции, как предлагалось ранее.

1 голос
/ 28 сентября 2011

Глядя в mDNSUNP.h, можно увидеть, что если sa_len не существует (например, в Linux), следует определить макрос NOT_HAVE_SA_LEN.Если это не определено в вашем случае, попробуйте добавить -DNOT_HAVE_SA_LEN к вашим флагам компиляции.

...