sendfile () - это, в конечном счете, возможность ядра, а не библиотеки или компилятора, и, если процитировать man-страницу linux: «Другие системы Unix реализуют sendfile () с другой семантикой и прототипами. Его не следует использовать в переносимых программах».
Похоже, что здесь находится man-страница для OSX sendfile (): https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man2/sendfile.2.html
И действительно, предупреждение man-страницы linux является точным - прототипы разные:
OSX:
int sendfile(int fd, int s, off_t offset, off_t *len, struct sf_hdtr *hdtr, int flags);
Linux:
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
Так что вам придется переписать.
OSX включает в себя на этой странице руководства, но для полноты:
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>