गिरी MakefileMakefile नियम त्रुटि: *** मिश्रित निहित और सामान्य नियमों
# Modules
/%/: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
%.ko: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir) $(@:.ko=.o)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
में त्रुटि Makefile मिश्रित निहित और सामान्य नियमों के कारण। (प्रदत्त कोड पर पहली स्ट्रिंग के लिए)
मुझे लगता है कि /%/ वाक्यविन्यास के साथ कुछ गलत है, मैं इसे कैसे सुधार सकता हूं?
अब तक मैं नियमों इस तरह से अलग करने के बारे में सोच रहा हूँ:
# Modules
/: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
%/: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
%.ko: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir) $(@:.ko=.o)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
लेकिन यह मेरे लिए भ्रामक है।
अच्छा लेकिन क्या मेरा समाधान सही है? जहां तक मैं समझता हूं कि मुझे इसे इस तरह से अलग करने की ज़रूरत है, लेकिन 2 बार समान चलना मेरे लिए अजीब लग रहा है। – Cynede
हां; अलगाव आवश्यक होगा। हां, दो नियमों को दो बार लिखना बहुत अच्छा नहीं है। शायद कार्यों के लिए एक मैक्रो बनाएँ, और फिर नियमों में इसका उपयोग करें। 'DIRECTORY_BUILD_RULES = $ (cmd_crmodverdir); $ (क्यू) $ (बनाने) KBUILD_MODULES = $ (यदि $ (CONFIG_MODULES), 1) $ (बिल्ड) = $ (बिल्ड-डीआईआर) ', फिर:' /: स्क्रिप्ट्स फोर्स तैयार करें; $ (DIRECTORY_BUILD_RULES) 'और'% s: स्क्रिप्ट तैयार करें; $ (DIRECTORY_BUILD_RULES) '। आप निर्भरता सूची को अन्य मैक्रो में भी बना सकते हैं ... –
अब यह बताता है: रिकर्सिव चर 'DIRECTORY_BUILD_RULES' संदर्भ स्वयं (अंततः)। रूक जा। – Cynede