sys/sendfile.h没有找到GCC
sys/sendfile.h not found GCC
我使用的是Mac OS 10.6.7,
gcc编译器在我买Mac的时候就已经有了。但是当我尝试包含sys/sendfile.h#include<sys/sendfile.h>
抛出错误
sys/sendfile.h: No such file or directory.
但是这个程序在ubuntu GCC编译器中可以正常工作。知道怎么解决这个问题吗?
sendfile()最终是一个内核功能,而不是一个库或编译器功能,并且引用linux手册,"其他Unix系统用不同的语义和原型实现sendfile()。它不应该在可移植程序中使用。"
曾经有一个适用于OSX/Darwin的sendfile手册的链接,但是苹果一直在移动他们的文档,所以你必须自己找到。
实际上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>
根据Linux手册页:
在POSIX.1-2001或其他标准中未指定。
其他UNIX系统用不同的语义和原型实现sendfile()。在可移植程序中不能使用
我不确定OSX,但似乎你必须自己做一点挖掘才能找到它。
您在找sendfile(2)
吗?如果是,它不在sys/sendfile.h
:
OS X Developer Library说明你应该包括这些:
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
在OSX上sendfile在socket.h中定义。所以你需要包含socket.h而不是sys/sendfile.h
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用gcc从静态链接的文件中查找可选符号
- 普通环路未使用gcc 4.8.5自动矢量化
- 有了gcc,是否可以链接库,但前提是它存在
- 在clang++预处理器中确定gcc工具链版本
- 为什么 gcc 编译这个而 msvc 没有
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何使用Clang/GCC在Mac上为C/C++设置VSCode
- sys/sendfile.h没有找到GCC