Избегайте ошибки, но подробное сообщение об ошибке

Здесь последние несколько строк из вывода "make install" на корневом уровне /home/gm/TEST/:

make[3]: Leaving directory `/home/gm/TEST/tppf/tm/ipmgt'
ld  ipfac.o ipfacV.o ipfac_rset.o ipfac_args.o ipfac_d2a.o ipfac_a2d.o ipfac_modr.o ipfac_mod.o ipfac_read.o ipfac_add.o ipfac_del.o ipfac_list.o ipfac_unlk.o ipfac_lock.o ipfac_util.o ipfac_lkid.o -r -o /home/gm/TEST/tppf/lib/ipfac_tppf.o
make[3]: Leaving directory `/home/gm/TEST/tppf/tm/ipfac'
make[2]: Leaving directory `/home/gm/TEST/tppf/tm'
make[1]: *** [i_tm] Error 2
make[1]: Leaving directory `/home/gm/TEST/tppf'
make: *** [i_tppf] Error 2

И Makefile под /home/gm/TEST/tppf/tm/ipfac содержит это правило:

install: ipfac.h $(TPPLIB)/ipfac_tppf.o

$(TPPLIB)/ipfac_tppf.o: $(PROPOBJS)
    ld  $(PROPOBJS) -r -o $(TPPLIB)/ipfac_tppf.o

Что-то не так с процессом связывания? Make должен был сказать мне, что такое ошибка на самом деле, но это не так.

Кстати, я думаю /home/gm/TEST/tppf/lib/ipfac _tppf. O был связан и создан успешно, или, по крайней мере, он был там в каталоге/home/gm/TEST/tppf/lib/после того, как make завершился с ошибкой и вышел.

Ответы

Ответ 1

Эта строка не является строкой ошибки. Вы можете сказать, что это удалось, потому что там не было сообщения об ошибке, для построения цели /home/gm/TEST/tppf/lib/ipfac_tppf.o.

Ошибка здесь:

make[1]: *** [i_tm] Error 2

[1] означает, что это был первый уровень make файла (обратите внимание, что рецепт, который вы цитируете, был на 3-м уровне makefile), а [i_tm] означает, что сборка целевой i_tm не удалась. Вам нужно еще раз взглянуть на результат make, раньше, чем вы показали нам, и найти строку ошибок *** для построения цели i_tm и посмотреть, какие там были ошибки.