12

当我尝试

$ 使依赖 -f gcc.mak

我的 Ubuntu 机器上的中间件我得到了这个

/usr/include/../include/limits.h:125:26:错误:没有搜索limits.h的包含路径

这是limits.h:125周围的内容:

/* 获取编译器的limits.h,它定义了几乎所有的ISO 常量。

    我们把这个#include_next 放在双重包含检查之外,因为
    应该可以多次包含这个文件并且仍然得到
    gcc 标题中的定义。*/
#if 定义 __GNUC__ && !defined _GCC_LIMITS_H_
/* `_GCC_LIMITS_H_' 是 GCC 文件定义的。*/
# include_next <limits.h>
#万一

我试过设置

$ 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 包吗?或者是否需要环境变量;也许这可以通过其他方式规避?

4

6 回答 6

3

我在进行交叉编译时遇到了这个问题。当您执行“makedepend”时,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 的默认路径之前。

于 2016-02-22T19:32:39.047 回答
2

我在使用 STLport 5.1.5 进行编译时遇到了问题,但看起来问题已解决是 STLport 5.2.0。该问题记录在 STLport Release Notes中。获得 STLport 5.2.1 的副本后,编译成功,没有出现任何问题。

于 2011-06-16T05:21:42.450 回答
1

这很可能是这个问题:https ://jira.apache.org/jira/browse/STDCXX-768 。我的解决方法是添加编译器选项-I/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed(此路径包含limits.h)。

于 2019-08-26T13:24:50.487 回答
0

考虑使用#include_next <limits.h>(gcc extension) 以强制 gcc 查看limits.h包含路径中的下一个(应该是工具集的副本)。

于 2009-05-16T08:13:25.890 回答
0

您需要的软件包是 glibc。

于 2009-12-26T21:39:18.900 回答
-1

我不再完全记得这个决议了,但它与一些丢失的包裹有关。在获得更多东西之后,它对我有用。

于 2009-08-10T09:35:01.893 回答