当我尝试
时$ make depend -f gcc.mak
我的Ubuntu机器上的中间件我得到了这个
/usr/include/../include/limits.h:125:26: error: no include path in which to search for limits.h
这是limits.h:125:
的内容/* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ #if defined __GNUC__ && !defined _GCC_LIMITS_H_ /* `_GCC_LIMITS_H_' is what GCC's file defines. */ # include_next <limits.h> #endif
我尝试过设置
$ export INCLUDE=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/ $ export C_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/ $ export CPLUS_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/
(这是我在我的系统上找到另一个limits.h的地方)。我已经安装了libc6-dev,是不是它的limits.h被另一个包覆盖了?我需要另一个-dev包吗?或者是需要的环境变量;也许这可以用其他方式来规避?
答案 0 :(得分:2)
我遇到了使用STLport 5.1.5进行编译的问题,但看起来修复的问题是STLport 5.2.0。 STLport Release Notes中记录了该问题。获得STLport 5.2.1的副本后,编译成功完成而没有打嗝。
答案 1 :(得分:2)
我在进行交叉编译时遇到过这个问题。当你执行'make depend'时Makefile将调用makedepend程序,如下所示:
MAKEDEPPROG=makedepend
makedepend仅搜索以/usr/include
由于#include_next
指令意味着在搜索路径中包含下一个找到的命名包含文件的实例,如果找不到另一个,则会失败。
对我来说,解决方案是指示makedepend首先搜索我的交叉编译器包含目录。我这样做是通过更改MAKEDEPPROG
赋值来包含-I
指令:
MAKEDEPPROG=makedepend -I < path/to/cross-compiler/include-fixed >
我建议阅读有关makedepend程序的内容(之前我一无所知)。例如,对我来说,makedepend不会使用环境搜索路径并不明显。 -I
指令将指定的搜索路径放在makedepend的默认路径之前。
答案 2 :(得分:1)
考虑使用#include_next <limits.h>
(gcc扩展名)来强制gcc查看包含路径中的下一个limits.h
(应该是工具集的副本)。
答案 3 :(得分:1)
这很可能是此问题:https://jira.apache.org/jira/browse/STDCXX-768。 对我来说,解决方法是添加编译器选项-I / usr / lib / gcc / x86_64-linux-gnu / 4.3 / include-fixed(此路径包含limits.h)。
答案 4 :(得分:0)
我不再完全记住决议,但它与一些缺失的包有关。在获得更多东西后,它对我有用。
答案 5 :(得分:0)
你需要的包是glibc。