2015-12-05 4 views
0

Я попытался сделать Makefile из шаблона и это то, что у меня есть:НКУ Makefile с -Wall -pedantic и -lpthread

CFLAGS = -Wall -pedantic 
LFLAGS = -lpthread 
CC = gcc 
OBJS = bank5.o client2.o 
PROGRAM = ex2 

all: bank client 

ex2: $(OBJS) 
    $(CC) $(LFLAGS) $(OBJS) -o $(PROGRAM) 

bank: bank5.c 
    $(CC) $(CFLAGS) -c bank5.c receive_message.c send_message.c -o bank5 

client: client2.c 
    $(CC) $(CFLAGS) -c client2.c receive_message.c send_message.c -o client2 

Когда я пытаюсь запустить его, я получаю эту ошибку:

gcc -Wall -pedantic -c bank5.c receive_message.c send_message.c -o bank5 
gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files 
compilation terminated. 
make: *** [bank] Error 4 

Это то, что мой Makefile выглядел до -Wall и -pedantic, это побежал нормально:

all: bank client 

bank: bank5.c 
    gcc bank5.c receive_message.c send_message.c -o bank5 -lpthread 

client: client2.c 
    gcc -o client2 client2.c send_message.c receive_message.c 

ответ

1
  • -c будет просто скомпилировать каждый файл (т. Е. Создать объектный файл), а не связывать их вместе. Поскольку один объектный файл соответствует одному исходному файлу, будет создано несколько объектных файлов .

  • -o файл вывода.

Очевидно, что оба противоречат друг другу.

Чтобы устранить проблему, удалите -c.


Во всяком случае, ваш make-файл выглядит сломанным. Что делает ex2? bank5.o и client2.o нигде не создаются.

+0

Как я уже сказал, я делал это из шаблона, и у шаблона были те. – Mari

 Смежные вопросы

  • Нет связанных вопросов^_^