我刚刚发现在Ubuntu服务器中,<stdlib.h>
和<stdio.h>
头文件位于/usr/include
文件夹中,但我找不到sys/types.h
。
我开始怀疑编译器实际上不会使用/usr/include
文件夹中的头文件。
这是真的吗?sys/types.h
文件在哪里?
我的Debian盒子(希望Ubuntu在他们的热情中没有把它搞砸得太厉害)将其放置在/usr/include/sys/types.h
中。
你最好执行:
find /usr/include -name types.h
find / -name types.h # if not found by one above
但是请记住,开发所需的东西可能甚至没有被安装在服务器上。除非是针对编译器农场的服务器,否则如果编译器和其他一些东西不是默认安装的一部分,我不会感到惊讶。
如果编译器确实已经定位到某个位置,而你只是不知道它在哪里,你可以使用类似以下的命令:
echo "#include <sys/types.h>" | gcc -E -x c - | grep /types.h
为了找出它从哪里获取,
那个 gcc
命令行:
-E
);-x c
);以及-
) 检索程序,在这种情况下是从 echo
语句中获取。最后的 grep
只会剥离掉不重要的行,留下可能包含所需文件位置的行。
gcc
的方法起作用了,现在我找到了那个文件。 - mko/usr/include/linux/types.h
找到了这个。 - jmervinesys/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
使用以下代码修复:
sudo apt-get install build-essential flex libelf-dev libc6-dev-amd64 binutils-dev libdwarf-dev
locate
命令,您可以简单地使用它:-bash-3.2$ locate sys/types.h
/usr/include/sys/types.h
/usr/lib/syslinux/com32/include/sys/types.h
-bash-3.2$
这是最快最简单的方法。
仅供参考,我在我的Debian机器上遇到了这个问题,结果发现在我的情况下
$ apt-file find /usr/include/sys/types.h
libc6-dev-i386: /usr/include/sys/types.h
我似乎需要安装libc6-dev-i386这个软件包。
types.h
文件应该位于/usr/include/sys/types.h
目录下。
echo "#include <sys/types.h>" | gcc -E -x c - | grep types
命令可以查看编译器从哪里引入了sys/types.h
头文件。请注意,翻译保持原意并简明扼要,不提供解释或其他额外内容。 - Mat-
有什么用? - mko