在 Alpine Linux 上构建我的项目(使用 musl libc),我从编译器中收到错误:
未找到
musl libc 没有
<sys/unistd.h>
。我将 include 行更改为 #include <unistd.h>
并且它编译成功(仍然有功能无法正常工作)。
我很好奇
<unistd.h>
和<sys/unistd.h>
之间的区别,但我在Google上找不到任何答案。 StackOverflow 上有一个关于不同 unistd.h
的问题,但所有答案都没有提到任何关于 unistd.h
的内容。
unistd.h
文件在 POSIX 系统(Linux、UNIX、MacOS 等)上很常见,包含这些系统上使用的函数和宏的声明。
sys/unistd.h
很可能是旧系统的残余。在 CentOS 上,此文件仅包含 #include <unistd.h>
。它在基于 Alpine 或 Debian 的系统上不存在。