stdarg.h未找到。

3
我正在使用clang编译C++代码。我使用以下命令调用clang:clang *.cc -o ray。然而,我遇到了以下错误信息:

--模式: 编译; 默认目录:“~/Programmeren/ray/”--
编译开始时间:Thu Aug 11 14:50:30

clang *.cc -o ray 在Engine.cc文件中被包含时发生错误:
在./Prefix.hh中被包含时发生错误:
在/usr/include/c++/4.2.1/string中被包含时发生错误:
在/usr/include/c++/4.2.1/bits/char_traits.h中被包含时发生错误:
在/usr/include/c++/4.2.1/bits/stl_algobase.h中被包含时发生错误:
在/usr/include/c++/4.2.1/iosfwd中被包含时发生错误:
在/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h中被包含时发生错误:
在/usr/include/c++/4.2.1/cstdarg中被包含时发生错误:
在/usr/include/stdarg.h中发生致命错误:“stdarg.h”文件未找到
#include_next <stdarg.h>
^ 出现1个错误。
编译于Thu Aug 11 14:50:30,以非正常状态退出

Prefix.hh文件中,我包含了一些文件,其中包括#include <string>
可能出现什么问题?

你使用的是什么操作系统?很遗憾,Clang中的路径仍然是硬编码的,所以你必须要编辑源代码(并重新编译),或者切换到已经破解的设置。 - rubenvb
@rubenvb 我的操作系统是Mac OS X 10.7,使用clang 2.1。然而,我安装了两个版本的clang。分别是clang 2.1和1.7。我将clang 2.1复制到了/usr/bin目录下。如果需要的话,重新安装clang对我来说没有问题。 - user142019
WTP:我想Clang版本是2.9。如果你正在运行超现代的Mac OS,我认为你需要最新的Clang。请参阅此处:http://llvm.org/releases/download.html - rubenvb
2个回答

5
我把clang 2.1复制到了/usr/bin目录下。 这很可能是你遇到问题的原因。不要这样做,"这样"指的是将系统软件从一个目录移动到另一个目录。这在许多UNIX系统软件中根本行不通。这些应用程序通常依赖可执行文件的位置来指示该应用程序所需的文件的位置。这就是为什么这些应用程序的makefile经常具有非常复杂的install目标的原因。
正确的做法是使用make install目标而不是mv。更好的方法是将它留在构建它的地方,并修改您的搜索路径,使目标目录位于/usr/bin之前。请勿改变/usr/bin。那个目录不是你可以修改的。 补充说明
fink(http://www.finkproject.org)和MacPorts(http://www.macports.org)都不会触及/usr/bin。这些项目的开发人员知道得更好。我强烈建议你遵循他们的方法。更好的方法是使用其中一个(或两个)工具来管理你的移植应用程序。

我按照你说的在路径前面添加了/Developer/usr/bin/,但是我仍然得到相同的错误。which clang显示/Developer/usr/bin/clang - user142019

0

当我尝试构建和运行程序时,出现了这个错误。经过多次尝试,我发现在重新排列一些文件夹之前,所有的应用程序都运行得很好,而这个错误只是在文件夹洗牌后出现的。所以我把文件夹放回去并尝试了一下。即使这样,这个错误仍然存在。在重新安装iOS(4.2)后,应用程序开始正常工作。

如果您还在寻找解决方案,您可以尝试这个方法。如果您已经找到了其他解决方案,我希望通过您提供的详细信息来丰富我的知识。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接