Проблема сборки GCC (#include next limits.ч)
когда я пытаюсь
$ 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, может быть, это его пределы.h был перезаписан другим пакетом? Нужен ли мне еще один пакет dev? Или требуется переменная среды; возможно, это может быть обойти каким-то другим способом?
5 ответов
Я столкнулся с проблемой компиляции с STLport 5.1.5, но, похоже, проблема исправлена-STLport 5.2.0. Проблема задокументирована в STLport Заметки. После получения копии STLport 5.2.1 компиляция прошла успешно без икоты.
я столкнулся с этой проблемой делать кросс-компиляцию. Когда вы выполняете "Make depend", Makefile вызовет программу makedepend, как видно из этого назначения:
MAKEDEPPROG=makedepend
makedepend ищет только некоторые каталоги по умолчанию, начиная с /usr/include
С #include_next
директива означает включение следующего найденного экземпляра именованного файла include в путь поиска, это приведет к сбою, если другой не найден.
для меня решение состояло в том, чтобы сначала направить makedepend для поиска моих кросс-компиляторов. Я сделал это, изменив MAKEDEPPROG
назначение для включения
рассмотрите возможность использования #include_next <limits.h>
(расширение gcc), чтобы заставить gcc посмотреть на следующий найденный limits.h
в пути включения (который должен быть копией набора инструментов).
Я точно не помню разрешение больше, но это было связано с каким-то отсутствующим пакетом. После того, как apt-получил еще несколько вещей, это сработало для меня.