2014-10-14 2 views
2

Я пытаюсь написать грим файл:Проблемы с Makefile

1) Включает файлы myftpserver.c и myftpclient.c в myftpserver.o и myftpclient.o, просто набрав команду «сделать».

2) Я также добавить «чистую» цель для очистки каталога (удаление всех временных файлов, объектные файлы и исполняемые файлы)

3) с помощью компилятора GCC.

Моя текущая версия не работает:

CC=gcc 

myftpserver: myftpserver.o 
    $(CC) -o myftpserver.o 

myftpclient: myftpclient.o 
    $(CC) -o myftpclient.o 

clean: ? // not sure what to put here 

Это мой первый раз делает Makefile. Я пробовал несколько других комбинаций, но никто не работает. Что я делаю не так?

ответ

3

Make имеет правило встроенное для основных файлов C, так что вам не нужен, чтобы сказать ему, как для построения myftpserver.o или myftpclient.o. Этот Makefile должен работать правильно, и правильно включает .PHONY поэтому clean правил не будет отключен в наличии файла с именем «чистый»

CC:=gcc 

.PHONY: clean all 

all: myftpserver myftpclient 

myftpserver: myftpserver.o 
myftpclient: myftpclient.o 

clean: 
     rm -f *~ *.o myftpserver myftpclient 

Для теста:

$ make --dry-run 
gcc -c -o myftpserver.o myftpserver.c 
gcc myftpserver.o -o myftpserver 
gcc -c -o myftpclient.o myftpclient.c 
gcc myftpclient.o -o myftpclient 

Надеется, что это помогает!

+1

ДА! Спасибо большое. Я потратил час, пытаясь сделать эту работу! –

+0

Нет проблем! Рад, что смог помочь! –

0

Вы хотите инструкций для компиляции файла .o, и команда ют оболочки для очистки:

CC=gcc 

myftpserver: myftpserver.o 
    $(CC) -o myftpserver myftpserver.o 

myftpclient: myftpclient.o 
    $(CC) -o myftpclient myftpclient.o 

myftpserver.o: myftpserver.c 
    $(CC) myftpserver.c 

myftpclient.o: myftpclient.c 
    $(CC) myftpclient.c 

clean: 
    rm -f *~ *# *.o myftpserver myftpclient 
+0

Привет, по какой-то причине это не сработало –

+0

Он получил только a.out для сборки –

+0

Исправлено: должно было добавить имя выходного файла после -o – Kadinski

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