Ответ 1
пакет, который вам нужен, - glibc.
Когда я пытаюсь
$ 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 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 header. */ #if defined __GNUC__ && !defined _GCC_LIMITS_H_ /* `_GCC_LIMITS_H_' is what GCC 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/
(где я нашел еще один limit.h в моей системе). У меня уже установлен libc6-dev, может быть, его limit.h был перезаписан другим пакетом? Нужен ли мне другой пакет -dev? Или требуется переменная среды; возможно, это можно обойти иначе?
пакет, который вам нужен, - glibc.
Я столкнулся со своей проблемой с компиляцией с 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
, включив директиву -I
:
MAKEDEPPROG=makedepend -I < path/to/cross-compiler/include-fixed >
Я предлагаю прочитать о программе makedepend (о которой я ничего не знал раньше). Например, для меня не было очевидно, что makedepend не будет использовать путь поиска среды. Директива -I
ставит указанный путь поиска до того, как он будет изменен по умолчанию.
Рассмотрим использование #include_next <limits.h>
(расширение gcc), чтобы заставить gcc искать следующий найденный limits.h
в include-пути (который должен быть копией набора инструментов).
Скорее всего, это проблема: https://jira.apache.org/jira/browse/STDCXX-768. Обходной путь для меня заключался в добавлении опции компилятора -I/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed (этот путь содержит limit.h).
Я точно не помню разрешение, но это связано с отсутствующим пакетом. После apt-получения еще нескольких вещей, это сработало для меня.