我刚发现<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)
如果你没有在第一个中找到它.
但是,请记住,甚至可能没有安装开发内容.我想成像一个服务器盒意味着用作服务器,如果编译器和一堆其他东西不是默认安装的一部分,它不会让我感到惊讶(但它会有很多服务器的东西,如ftpd或Apache和等等).
如果编译器将它定位在某个地方并且你只是不知道在哪里,你可以使用类似的东西:
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)
如果您找到了可用的命令,则只需使用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)
这是最快捷,最简单的方法.
| 归档时间: |
|
| 查看次数: |
84944 次 |
| 最近记录: |