最近在使用Xcode 11.5编译静态库给客户使用的时候,自己编译正常,调用编译也正常,但是在同事那边(xcode11.3)调用静态库编译demo时却出现了错误:Undefined symbols for architecture arm64:"___darwin_check_fd_set_overflow"。随后,让同事升级Xcode版本到最新版本后,该问题解决。
google了一下,发现很多其他的工程涉及到调用库的时候都出现了类似的问题,比如:
curl: https://github.com/curl/curl/issues/5210
xamarin:https://github.com/xamarin/xamarin-macios/issues/8325
mono:https://github.com/mono/mono/issues/19393
看了一下大家的讨论和自己这边出问题的代码,发现应该是最新版的Xcode(11.5)在编译socket的FD_SET等函数时出现了问题,导致和旧版本不兼容。
解决版本最好是升级最新版的Xcode;或者为了兼容老的xcode,用旧版本的xcode来编译。至于是否能用其他函数来替换FD_SET等,这个还没去了解。