我最近从 Kubuntu 12.04 升级到 13.04,完全重新安装。
使用 gcc 4.7.3。我编译了一些程序,发现没有/usr/include/sys
目录。也就是说types.h
,stat.h
、 等都不存在。它们存在于include/linux
目录中,但 不存在include/sys
。
这是怎么回事?
答案1
如果您在 64 位上使用 Ubuntu(我现在无法在 32 位系统上准确地发送文本),那么问题的目录是:
/usr/include/x86_64-linux-gnu/sys
/usr/include/sys
现在,有了这些信息,如果您确实需要这些文件在该位置( ),您可以在终端上使用以下命令创建这些文件的符号链接:
sudo ln -s /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/sys/types.h
sudo ln -s /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/sys/stat.h
# ...etc
答案2
如果您使用的是 64 位 Linux,请安装 libc6-dev-amd64。在 ubuntu 终端上输入以下命令:
sudo apt-get install libc6-dev-amd64
答案3
让我们检查一下 gcc 的默认包含搜索路径。从这个答案,我们得到这个命令:
gcc -xc -E -v -
在输出的最后,我在我的机器上看到了这个:
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
注意倒数第二行。这意味着当您使用 编译 C 文件时,gcc 会在尝试 之前#include <sys/stat.h>
查找,而我们无需对任何内容进行符号链接。/usr/include/x86_64-linux-gnu/sys/stat.h
/usr/include/sys/stat.h
答案4
由于我的架构是 amd64,所以没有libc6-dev-amd64
。要安装的包是libc6-dev-i386
。
这修复了 CPAN 包的依赖性。