`साफ़ करें` और` डिस्टेंक्लाइन बनाने` के बीच अंतर


25

मैंने इस पृष्ठ की मदद से स्रोतों से ffmpeg स्थापित किया है। https://trac.ffmpeg.org/wiki/CentosCompilationGuide

मैंने देखा कि इस ट्यूटोरियल के make distcleanबाद ज्यादातर कॉल आते हैं make install। लेकिन make cleanस्थापित करने के बाद केवल libvpx कॉल ।

इस दस्तावेज़ के अनुसार, http://www.gnu.org/software/automake/manual/automake.html#Clean बनाई गई make cleanसभी फ़ाइलों को हटा देता है makeऔर बनाई गई make distcleanसभी फ़ाइलों को डिलीट कर देता ./configureहै।

साफ करो

बिल्ड ट्री से बनाई गई फाइलों को मिटाकर सभी को मिटा दें।

भेद करना

इसके अतिरिक्त कुछ भी मिटा दें ।/configure बनाया।

मैं समझता हूं कि make distcleanअगली स्थापना के लिए कहा जाता है, लेकिन मुझे समझ नहीं आया कि make cleanस्थापना के बाद क्यों बुलाया जाता है।

स्थापित ffmpeg समस्या के बिना काम करता है। इसलिए मैंने यह सवाल पूछा क्योंकि मैं केवल लिनक्स के बारे में अपने ज्ञान में सुधार करना चाहता हूं। यह बहुत उपयोगी होगा कि कोई मुझे इसके लिए स्पष्टीकरण दे।


2
सफाई को साफ करने के लिए स्थापना के बाद कहा जाता है। संकलित संस्करणों को उस निर्देशिका में रखने की कोई आवश्यकता नहीं है जहां आपने संकलित किया है यदि आपके पास अभी भी दोनों स्रोत हैं (और इस प्रकार उन को फिर से बना सकते हैं) और स्थापित प्रोग्राम।
हेन्नेस

जवाबों:


27

के बाद उपयोग किया जाने वाला पैरामीटर makeसिर्फ उस डेवलपर (नों) पर निर्भर है जिसने लिखा था Makefile। आपके द्वारा बाद में संदर्भित दस्तावेज़, ऑटोटूलस, एक बनाने के कई तरीकों में से एक है Makefile

विशिष्ट मानक make cleanसभी मध्यवर्ती फ़ाइलों को हटा देगा, और make distcleanपेड़ को ठीक उसी तरह बनाता है जैसे यह तब था जब यह किसी भी कॉन्फ़िगर स्क्रिप्ट आउटपुट को हटाने सहित अन-टर्डेड (या कुछ बहुत करीब) था। यह उदाहरण के लिए लिनक्स कर्नेल काम करता है।

दूसरे शब्दों में, यह उन पुस्तकालयों में से प्रत्येक के लिए डेवलपर्स पर पूरी तरह से निर्भर है, और यही कारण है कि कभी-कभी इसका cleanऔर अन्य समयों का distclean। वैसे, आपको चलाने की आवश्यकता नहीं है clean/ distclean- मुझे लगता है कि उन्होंने इसे डिस्क स्थान को बचाने के लिए चलाया है। make installआमतौर पर फ़ाइलों को गंतव्य निर्देशिका (फिर से डेवलपर्स पर निर्भर) में कॉपी करता है - आम तौर पर ( /usr/libया /usr/binकॉन्फ़िगर स्क्रिप्ट द्वारा निर्धारित किया जाता है, अगर यह एक ऑटोटूलस बिल्ड सिस्टम है)

ये बारीकियाँ मुख्य कारण हैं जो लोग RPM या डेबियन पैकेज जैसे संकुल प्रबंधन प्रणालियों का उपयोग करते हैं।


मुख्य कारण लोग बाइनरी पैकेज का उपयोग करते हैं? समय बचाने के बारे में क्या?
एक्स-यूरी

6

मेरी समझ में यह बस डिस्क स्थान को सुरक्षित करने के लिए है। कुछ प्रोग्राम संकलित करने के बाद आपके पास बहुत सारी फाइलें होंगी, उदाहरण के लिए ऑब्जेक्ट फाइलें जिनकी अब कोई जरूरत नहीं है, क्योंकि वे बायनेरिज़ में एक साथ जुड़ी हुई हैं। सभी को कुछ सीपीयू समय फिर से खर्च करके फिर से बनाया जा सकता है।

इस उदाहरण को वर्तमान ffmpegकोड के साथ लें :

  • gitरेपो क्लोनिंग के बाद , स्रोत 53 160 kB लेता है
  • कॉन्फ़िगर रन के बाद यह 53 632 kB है
  • संकलन के बाद हमारे पास प्रारंभिक मूल्य के 10 गुना से अधिक है: 673 668 केबी
  • make clean इसे घटाकर 53 636 kB कर देता है
  • और अंत में जब make distcleanहम क्लोनिंग के ठीक बाद के स्तर पर लगभग हैं: 53 188 kB

2

make cleanइसके बजाय libvpx चरण का उपयोग क्यों किया जाता हैmake distclean

गाइड लिखने के समय Makefileटारगेट के लिए libvpx का कोई नियम नहीं था distclean, इसलिए cleanइसके बजाय इसका उपयोग किया गया था।

के make (dist)cleanबाद क्यों शामिल किया गया हैmake install

make distclean/ make cleanप्रत्येक के बाद make installएक एहतियाती उपाय के रूप में शामिल किया गया है जो वापस जाने वाले उपयोगकर्ताओं के लिए "क्लीन स्लेट" प्रदान करता है, कॉन्फ़िगर विकल्प बदलें, और फिर से संकलित करें (जो उम्मीद से अधिक बार हुआ)।

संकलन गाइड के पिछले संस्करण में, निवारक के बिना make distclean, इन उपयोगकर्ताओं में से एक को अप्रत्याशित परिणाम का सामना करना पड़ेगा।

क्या होगा make distclean/ यदि make cleanकोई त्रुटि देता है?

ऐशे ही:

Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'.  Stop.

या यह:

make: *** No rule to make target 'distclean'.  Stop.

अनदेखी करो इसे। यह सिर्फ मतलब है कि आप संभावना make distcleanदो बार भाग गया है जो हानिरहित है।


वर्थ नोटिंग कि गाइड अब make distcleanlibvpx का उपयोग करता है।
हाशिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.