sys/types.h在哪里?

mko*_*mko 20 c linux ubuntu

我刚发现<stdlib.h><stdio.h>标题位于/usr/includeUbuntu服务器的文件夹中,但我找不到sys/types.h.

我开始怀疑编译器实际上不会在/usr/include文件夹中使用头文件.

这是真的,文件位于何处?

pax*_*blo 50

我的Debian盒子(希望Ubuntu 在他们的热情中没有过多地宰杀它)/usr/include/sys/types.h.

你最好的选择是首先执行:

find /usr/include -name types.h
Run Code Online (Sandbox Code Playgroud)

然后:

find / -name types.h
Run Code Online (Sandbox Code Playgroud)

如果你没有在第一个中找到它.

但是,请记住,甚至可能没有安装开发内容.我想成像一个服务器盒意味着用作服务器,如果编译器和一堆其他东西不是默认安装的一部分,它不会让我感到惊讶(但它会有很多服务器的东西,如ftpdApache和等等).

如果编译器将它定位在某个地方并且你只是不知道在哪里,你可以使用类似的东西:

echo "#include <sys/types.h>" | gcc -E -x c - | grep /types.h
Run Code Online (Sandbox Code Playgroud)

找出它的来源.

要么:

echo "#include <stdio.h>" | gcc -E -x c - | grep /stdio.h
Run Code Online (Sandbox Code Playgroud)

对于你担心的另一个标题.

旁白:该gcc命令行在预处理阶段(-E)之后停止,强制将文件视为C源代码(-x c)并从标准输入(-)中检索程序,在本例中是从echo语句中检索.

决赛grep只是删除了不重要的线条.


小智 14

该文件sys/types.h位于/usr/include/sys/types.h

如果你得到这种致命错误:

.../linux/linux_types.h:146:38: fatal error: /usr/include/sys/types.h: No
such file or directory
Run Code Online (Sandbox Code Playgroud)

使用以下代码进行修复:

sudo apt-get install build-essential flex libelf-dev libc6-dev-amd64 binutils-dev libdwarf-dev
Run Code Online (Sandbox Code Playgroud)

  • 如果它仅适用于sys/types.h我认为*build-essential应该可以解决问题. (5认同)
  • 在linux mint 16:sudo apt-get install build-essential就足够了. (2认同)

Dmi*_*kin 6

如果您找到了可用的命令,则只需使用locate:

-bash-3.2$ locate sys/types.h
/usr/include/sys/types.h
/usr/lib/syslinux/com32/include/sys/types.h
-bash-3.2$
Run Code Online (Sandbox Code Playgroud)

这是最快捷,最简单的方法.