Проблема сборки GCC (#include_next limit.h) - PullRequest
10 голосов
/ 16 мая 2009

Когда я пытаюсь

$ make depend -f gcc.mak

промежуточное ПО на моей машине с Ubuntu, я получаю это

/usr/include/../include/limits.h:125:26: error: no include path in which to search for limits.h

Это содержимое в пределах допустимого. 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/

(именно там я нашел еще один предел .h в моей системе). У меня уже установлена ​​библиотека libc6-dev. Может ли быть так, что ее limit.h был перезаписан другим пакетом? Нужен ли другой пакет -dev? Или требуется переменная окружения; может быть, это можно обойти другим способом?

Ответы [ 5 ]

2 голосов
/ 22 февраля 2016

Я столкнулся с этой проблемой во время кросс-компиляции. Когда вы выполните make make, 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 голосов
/ 16 июня 2011

Я столкнулся с проблемой компиляции с помощью STLport 5.1.5, но похоже, что проблема исправлена ​​в STLport 5.2.0 Проблема задокументирована в STLport Замечания к выпуску . После получения копии STLport 5.2.1 компиляция прошла успешно, без сбоев.

1 голос
/ 16 мая 2009

Попробуйте использовать #include_next <limits.h> (расширение gcc), чтобы заставить gcc просмотреть следующий найденный limits.h в пути включения (который должен быть копией набора инструментов).

0 голосов
/ 27 декабря 2009

пакет, который вам нужен, это glibc.

0 голосов
/ 10 августа 2009

Я точно не помню разрешение, но оно было связано с отсутствующим пакетом. После того, как я получил еще кое-что, это сработало для меня.

...