Сравните то, что записано в lib / deps / util.d на вашей рабочей (Solaris) машине с нерабочей (redhat), обращая особое внимание на строку 25. Это, вероятно, даст вам хороший совет относительно того, что происходит неправильно.
Если они идентичны, проблема заключается в том, что одноразовая минорная версия.
Если вы отличаетесь, возможно, проблема в некоторой разнице между запущенными инструментами или (более вероятно) различными версиями установленной icc.
редактировать
расшифровка make rule:
$(GEN_DEPS) :
@set -e; rm -f $@; \
$(CC) $(CDEP_FLAG) $(CFLAGS) $(INCDIRS) `basename $@ | sed 's/\.d/\.c/' | sed 's,^,$(HOME_SRC)/,'` | sed 's,\(.*\)\.o: ,$(GEN_OBJDIR)/\1.o $@ :,g' > $@.tmp ; \
cat $@.tmp > $@ ; \
cat $@.tmp | cut -d: -f2 | grep '\.h' | sed 's,\.h,.h :,g' >> $@ ; \
rm $@.tmp
Это правило делает файлы зависимостей в $(GEN_DEPS)
, которые соответствуют всем исходным файлам с .c
, измененным на .d
@set -e; rm -f $@;
Заставить любые ошибки немедленно выйти из этого правила с ошибкой, а не продолжить, и удалить цель, которую мы собираемся восстановить
$(CC) $(CDEP_FLAG) $(CFLAGS) $(INCDIRS) `basename $@ | sed 's/\.d/\.c/' | sed 's,^,$(HOME_SRC)/,'` | sed 's,\(.*\)\.o: ,$(GEN_OBJDIR)/\1.o $@ :,g' > $@.tmp ;
Запустите icc для файла .c, соответствующего файлу .d, который мы пытаемся сгенерировать с флагами, чтобы автоматически генерировать зависимости вместо компиляции. basename $@ | sed 's/\.d/\.c/' | sed 's,^,$(HOME_SRC)/,'
предложение переводит имя .d обратно в имя .c.
Передать вывод (который является правилом зависимостей) в сценарий sed sed 's,\(.*\)\.o: ,$(GEN_OBJDIR)/\1.o $@ :,g'
, который добавит сам файл зависимостей как нечто, зависящее от всего, что icc нашел для файла .o
(объект), от которого зависит , Запишите все это во временный файл.
cat $@.tmp > $@ ;
Скопировать временный файл в выходной файл зависимостей.
cat $@.tmp | cut -d: -f2 | grep '\.h' | sed 's,\.h,.h :,g' >> $@ ;
Добавьте вторую копию зависимостей в файл зависимостей, модифицированный небольшим скриптом, который удаляет цель и превращает первый заголовок в цель. Таким образом, это добавление дополнительного набора зависимостей для первого заголовочного файла, который появляется в исходном файле.
rm $@.tmp
Удалить временный файл.