1

使用 gcc 编译 C 文件时出现错误 - 由于没有为 dce/rpc.h 找到此类文件/目录,因此出错。我应该在哪里寻找它?

4

3 回答 3

7

此命令打印包含路径:

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它,你可能会走错路。

于 2012-10-10T06:03:31.477 回答
3

You can find out which directories gcc will search in for include files by default, by running the preprocessor (cpp) with the -v option. You also should specify which language you're interested in, unless it's C, since each language has its own search path.

Here's an example:

cpp -v -x c++ < /dev/null

Note that you have to specify that there is no file to preprocess; otherwise, it will try reading from stdin.

The above shows the default include path for c++.

于 2012-10-10T05:57:02.317 回答
0

从那里开始/usr/include并从那里开始工作,假设它是一个系统头文件。大多数系统头文件都存储在 UNIX/Linux 系统下。

如果它不是系统标头,它将位于您(或其他第三方)放置它的任何位置(实际上可能在任何地方)。如果你想找到它,你可以做类似(for xyzzy.h)的事情:

find / -name xyzzy.h 2>/dev/null

如果您找不到您期望的标题,那么它可能没有安装在您的系统上。你需要弄清楚如何做到这一点。例如,The Open Group 有一个可以在 Linux 下使用的LGPL 风格的 DCE 实现。

根据您的平台(AIX、HP-UX、Solaris 等),安装软件包可能很简单。

于 2012-10-10T05:35:26.963 回答