2011-05-03 12 views
10
SOURCES = server.c 

TARGET = Server 

CC = gcc 

all: $(SOURCES) $(TARGET) 


$(CC) $(SOURCES) -o $(TARGET) 

clean: 


rm -rf $(TARGET) 

ऊपर मेरे वेब सर्वर का मेकफ़ाइल है। हालांकि server.c फ़ाइल निर्देशिका में है इस fallowing त्रुटिमेकफ़ाइल त्रुटि: लक्ष्य बनाने के लिए कोई नियम

make: *** No rule to make target `Server', needed by `all'. Stop. 

देता है क्या गलती मैं कर दिया है और यह कैसे हल करने के लिए है।

+1

अपने makefile वास्तव में ऊपर की तरह लग रही है? यदि नहीं, तो कृपया दो मैच तक संपादित करें। यदि ऐसा होता है, तो मेकफ़ाइल सिंटैक्स पर पढ़ें। –

+0

या यह मेरा मेकफ़ाइल है। यह मुझे उपरोक्त त्रुटि देता है। –

उत्तर

17

मैं अपने makefile अपने मशीन और पोस्ट के बीच में कहीं ठीक से प्रदर्शित किया गया लगता है, लेकिन उन्हें आसानी से ठीक मुझे लगता है कि काम करेगा:

all: $(SOURCES) 

कि (शायद) समस्या का समाधान और त्रुटि जाना कर देगा दूर - अगर आप सब चाहते हैं तो आप पढ़ना बंद कर सकते हैं। लेकिन इस मेकफ़ाइल के साथ अभी भी कुछ गलत हैं, इसलिए हम कुछ और सुधार कर सकते हैं।

सबसे पहले, एक छोटे से समायोजन यह मेल मैं क्या लगता है कि आपके makefile वास्तव में कहते हैं बनाने के लिए:

SOURCES = server.c 

TARGET = Server 

CC = gcc 

all: $(SOURCES) $(TARGET) 
    $(CC) $(SOURCES) -o $(TARGET) 

clean: 
    rm -rf $(TARGET) 

पहली तीन पंक्तियों और clean नियम ठीक हो, हम उन पर ध्यान नहीं देंगे। अब हम TARGET अपने स्वयं के नियम देने के लिए और आवश्यक शर्तें सीधा:

all: $(TARGET) 

$(TARGET): $(SOURCES) 
    $(CC) $(SOURCES) -o $(TARGET) 

अब हम all जाली बनाने (क्योंकि यह वास्तव में एक फ़ाइल "सभी" कहा जाता है नहीं है), और TARGET नियम बनाने के लिए स्वत: चर परिचय और अधिक मजबूत और कम अनावश्यक:

.PHONY: all 
all: $(TARGET) 

$(TARGET): $(SOURCES) 
    $(CC) $< -o [email protected] 

आपके codebase और जटिल हो जाता है, तो अधिक जानने के लिए है, लेकिन वह अब के लिए प्रयास करेंगे।

1

बस सभी लिंक साफ़ करने के लिए "साफ करें" करें, फिर फिर से चलाएं। सबकुछ अच्छा होना चाहिए।

0

मेरे मुद्दों पर मेरा नाम और एक ही पंक्ति पर कमांड था। बनाओ: सुनिश्चित करें कि आप टैब का उपयोग कर रहे हैं और रिक्त स्थान नहीं हैं। (कोई यमक इरादा)

से पहले (टूटे)

build: docker build... 

बाद

build: 
     docker build... 
संबंधित मुद्दे