2012-10-10 133 views
0

我在使用gcc编译C文件时出现错误 - 由于没有为dce/rpc.h找到这样的文件/目录,所以发生错误。我应该在哪里找它?gcc编译器在编译时查找头文件在哪里?

+1

检查文件是否真的存在?如果没有关于缺少什么的信息(你的文件或其他东西),很难说什么 – nhahtdh

+0

你需要额外的'-I'选项来'gcc',并且你可能想要使用'' –

+0

这些天,不是每一个系统将在系统上拥有DCE(桌面计算环境 - 用于Motif等,从OSF/1的辉煌日子等)。代码是新的还是旧的?它是否附带说明如何在您的平台上找到DCE(以及您的平台是什么)? (GCC在不同平台上的不同位置查找,主要看起来在/ usr/include;看起来取决于它的配置。) –

回答

0

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

如果它不是系统标题,它将会在您(或另一个第三方)放置的位置(可能在任何地方)。如果你想找到它,你可以这样做(为xyzzy.h):

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

如果无法找到那么你期望它可能不是您的系统上安装了头。你需要弄清楚如何做到这一点。例如,The Open Group有一个LGPL-style DCE implementation,你可以在Linux下使用。

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

+0

我忘了提及它找不到头文件dce/rpc。h – Programah

+1

然后,这将解释错误。如果安装了DCE,那么DCE几乎肯定会在/ usr/include下。您需要了解如何安装它(最初通过告诉我们您使用的平台)。 – paxdiablo

+0

它不在/ usr/include中。如果它在那里,它会找到它。我使用的是Unix机器,但这是否表明它没有安装。我找到了/ -name'dce/rpc.h'2>/dev/null,但它没有返回任何东西 – Programah

2

通过使用-v选项运行预处理器(cpp),您可以找出默认情况下gcc将搜索包含文件的目录。你也应该指定你感兴趣的语言,除非它是C,因为每种语言都有自己的搜索路径。

下面是一个例子:

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

请注意,您必须指定没有文件进行预处理;否则,它会尝试从stdin读取。

上面显示了C++的默认包含路径。

4

此命令打印包含路径:

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,该路径可以是非常困难的quess:

#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它,你可能会得到一个错误的路径。