我在使用gcc编译C文件时遇到错误 - 由于没有为dce / rpc.h找到这样的文件/目录,因此给出了错误。我应该在哪里寻找它?
答案 0 :(得分:6)
此命令打印包含路径:
gcc -xc -v -
在我的linux框中,结果如下:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/i586-redhat-linux/4.4.1/include
/usr/include
End of search list.
使用交叉gcc时,路径可能非常难以判断:
#include <...> search starts here:
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/lib/gcc/arm-v5te-linux-gnueabi/4.6.2/include
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/lib/gcc/arm-v5te-linux-gnueabi/4.6.2/include-fixed
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/lib/gcc/arm-v5te-linux-gnueabi/4.6.2/../../../../arm-v5te-linux-gnueabi/include
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/sysroot-arm-v5te-linux-gnueabi/usr/include
End of search list
所以不要试图去问find
它,你可能会走错路。
答案 1 :(得分:3)
通过使用-v选项运行预处理器(cpp),您可以找出gcc默认搜索包含文件的目录。您还应指定您感兴趣的语言,除非它是C语言,因为每种语言都有自己的搜索路径。
以下是一个例子:
cpp -v -x c++ < /dev/null
请注意,您必须指定没有要预处理的文件;否则,它会尝试从标准输入读取。
上面显示了c ++的默认包含路径。
答案 2 :(得分:0)
从/usr/include
开始,从那里开始工作,假设它是系统标题。大多数系统头文件存储在UNIX / Linux系统下。
如果它不是系统标题,那么它将是您(或其他第三方)放置它的地方(可能在任何地方)。如果你想找到它,你可以做一些事情(对于xyzzy.h
):
find / -name xyzzy.h 2>/dev/null
如果您无法找到您期望的标头,那么它可能不会安装在您的系统上。你需要弄清楚如何做到这一点。例如,Open Group有一个LGPL-style DCE implementation,可以在Linux下使用。
根据您的平台(AIX,HP-UX,Solaris等),安装软件包可能很简单。