make: *** [] Ошибка 1 ошибка - PullRequest
       1

make: *** [] Ошибка 1 ошибка

31 голосов
/ 04 апреля 2011

Я пытаюсь скомпилировать файл Pro * C на gcc и получаю эту ошибку:

make: *** [MedLib_x.o] Error 1

Эта команда выводится командой make:

   /usr/bin/gcc -g -fPIC -m64 -DSS_64BIT_SERVER  -I/home/med/src/common -
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/demo 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/xdk/include INCLUDE=/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public -lnapi -ltabs -c MedLib_x.c

Пожалуйста, помогите мне, почему появляется эта ошибка? Хотя объектный файл также создан.

Ответы [ 4 ]

21 голосов
/ 04 апреля 2011

Из приложения GNU Make error, поскольку вы видите, что это не ошибка Make, а ошибка, исходящая от gcc.

f [foo] Ошибка NN ’ Description [foo] описание сигнала ’ Эти ошибки на самом деле не делают ошибок вообще. Они означают, что программа, которая вызывается как часть рецепта, возвратила код ошибки, отличный от 0 («Ошибка NN»), который интерпретирует как сбой, или завершился каким-то другим ненормальным образом (с сигналом некоторого типа). Смотрите ошибки в рецептах. Если к сообщению не присоединен ни один символ ***, то подпроцесс завершился неудачно, но в правиле в файле makefile был указан специальный символ -, поэтому make проигнорировала ошибку.

Таким образом, для решения проблемы необходимо сообщение об ошибке от gcc. Вставьте команду в Makefile непосредственно в командную строку и посмотрите, что говорит gcc. Для получения более подробной информации об ошибках, нажмите здесь.

15 голосов
/ 08 ноября 2011

Я получил то же самое. Запуск "make", и это просто не с этим сообщением.

% make
make: *** [all] Error 1

Это вызвано тем, что команда в правиле завершается с ненулевым состоянием выхода. Например. представьте себе следующее (глупо) Makefile:

all:
       @false
       echo "hello"

Сбой (без вывода "hello") с вышеприведенным сообщением, поскольку false завершается со статусом выхода 1.

В моем случае я пытался быть умным и сделать резервную копию файла перед его обработкой (чтобы я мог сравнить вновь созданный файл с моим предыдущим). Я сделал это, имея в своем Make правиле, которое выглядело так:

@[ -e $@ ] && mv $@ $@.bak

... не понимая, что если целевой файл не существует, то приведенная выше конструкция завершит работу (без выполнения команды mv) со статусом выхода 1, и, следовательно, все последующие команды в этом правиле не будут выполнены. Переписав мою ошибочную строку:

@if [ -e $@ ]; then mv $@ $@.bak; fi

Решил мою проблему.

3 голосов
/ 12 июня 2014

Иногда вы получите множество выходных данных компилятора со множеством предупреждений и без строки вывода, в которой будет написано «ошибка: вы сделали что-то не так», но все равно была ошибка.Примером этого является отсутствующий заголовочный файл - компилятор говорит что-то вроде «нет такого файла», но не «ошибка: нет такого файла», затем он завершается с ненулевым кодом выхода через некоторое время (возможно, после многих других предупреждений).В этих случаях Make выдаст сообщение об ошибке!

0 голосов
/ 07 мая 2014

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

...