使用 gcc 编译 C 文件时出现错误 - 由于没有为 dce/rpc.h 找到此类文件/目录,因此出错。我应该在哪里寻找它?
3 回答
此命令打印包含路径:
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
它,你可能会走错路。
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++.
从那里开始/usr/include
并从那里开始工作,假设它是一个系统头文件。大多数系统头文件都存储在 UNIX/Linux 系统下。
如果它不是系统标头,它将位于您(或其他第三方)放置它的任何位置(实际上可能在任何地方)。如果你想找到它,你可以做类似(for xyzzy.h
)的事情:
find / -name xyzzy.h 2>/dev/null
如果您找不到您期望的标题,那么它可能没有安装在您的系统上。你需要弄清楚如何做到这一点。例如,The Open Group 有一个可以在 Linux 下使用的LGPL 风格的 DCE 实现。
根据您的平台(AIX、HP-UX、Solaris 等),安装软件包可能很简单。