【发布时间】:2010-10-26 16:42:43
【问题描述】:
当我尝试时
$ make 依赖 -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我试过设置
$ 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 包吗?或者是否需要环境变量;也许这可以通过其他方式规避?
【问题讨论】:
-
这应该可以正常工作。在编译命令中添加“-v”会看到什么?
-
我猜limits.h 丢失(或被覆盖)。 -v 让我 GNU Make 3.81 目标:x86_64-linux-gnu gcc 版本 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
-
你能找到的另一个limits.h是应该被include_next拉进来的。您可以将 -v 添加到执行失败编译的 gcc 命令行中,即 gcc -v -c foo.c 吗?其输出中有趣的部分是 #include <...> 搜索从此处开始:/usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.3.3/include /usr/lib/gcc/ x86_64-linux-gnu/4.3.3/include-fixed /usr/include 搜索列表结束。
-
你可以试试
export CPATH=$(env | grep _INC | cut -d= -f2 | paste -d: -s)和export LIBRARY_PATH=$(env | grep _LIB | cut -d= -f2 | paste -d: -s)
标签: c++ linux gcc g++ gnu-make