找不到stdarg.h

时间:2011-08-11 12:54:00

标签: c++ include compilation clang

我正在使用clang来编译C ++。我使用clang *.cc -o ray调用clang。但是,我收到此错误消息:

  

- - 模式:编译; default-directory:“〜/ Programmeren / ray /” - -
  汇编于8月11日星期四14:50:30开始。

     

clang * .cc -o ray Engine.cc:1中包含的文件:包含的文件中   来自./Prefix.hh:1:包含在文件中   /usr/include/c++/4.2.1/string:46:在包含的文件中   /usr/include/c++/4.2.1/bits/char_traits.h:45:包含在文件中   /usr/include/c++/4.2.1/bits/stl_algobase.h:70:包含在文件中   /usr/include/c++/4.2.1/iosfwd:44:在包含的文件中   /usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:49:
  在/usr/include/c++/4.2.1/cstdarg:50中包含的文件中:
  /usr/include/stdarg.h:4:15:致命错误:'stdarg.h'文件未找到
  #include_next <stdarg.h>
               生成^ 1错误。
  编译在8月11日星期四14:50:30与代码1异常退出

Prefix.hh中,我添加了多个文件,包括#include <string>

可能是什么问题?

2 个答案:

答案 0 :(得分: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。这些项目的开发人员知道的更好。我强烈建议你跟随他们。更好的是,使用这些工具中的一个(或两个)来管理移植的应用程序。

答案 1 :(得分:0)

尝试构建和运行程序时出现此错误。经过多次试验后,我发现所有应用程序都在我重新安排我的一些文件夹之前运行良好,并且只有在文件夹改组后才会出现此错误。所以我放回文件夹并尝试了。即使这样,这个错误仍然存​​在。在重新安装iOS(此处为4.2)时,应用程序开始正常运行。

如果您仍在寻找解决方案,可以试试这个。如果您找到了任何其他解决方案 我希望通过你的详细信息丰富知识。