উত্তর:
অনলাইন ম্যানুয়ালটিতে ইঙ্গিত হিসাবে , ত্রুটির জন্য সর্বাধিক সাধারণ কারণ হ'ল make
ট্যাব অক্ষরের প্রত্যাশা করার সময় লাইনগুলি স্পেসে ইন্টেন্ট করা হয় ।
target:
\tcmd
\t
ট্যাব কোথায় (ইউ + 0009)
target:
....cmd
যেখানে প্রত্যেকে .
একটি স্পেস (ইউ + 0020) উপস্থাপন করে।
কেবল গ্রিনগুলির জন্য, এবং যদি অন্য কেউ একই ধরণের ত্রুটিতে চলে:
আমি কুখ্যাত "নিখোঁজ বিভাজক" ত্রুটি পেয়েছি কারণ আমি কোনও ফাংশনকে সংজ্ঞায়িত করার জন্য একটি বিধি প্রেরণ করেছি
($eval $(call function,args))
বরং
$(eval $(call function,args))
অর্থাৎ ($
বদলে $(
।
0x20
সেখানে "স্থান" ছিল না, এটা কি সঠিক?
$
আমার জন্য, সমস্যাটি ছিল যে আমার কাছে বহু-লাইন ভেরিয়েবল সংজ্ঞাতে # ...
এমবেড করা কিছু শেষ-লাইন মন্তব্য define ... endef
ছিল। মন্তব্যগুলি সরানোর ফলে সমস্যাটি সরে গেছে।
define
নির্দেশের মন্তব্যে আক্ষরিক আচরণ করা হয়। আসলে আচরণটি ডকুমেন্টেশনে ব্যাখ্যা করা হয়নি । (স্পষ্টতার জন্য: নির্দেশকের মধ্যে একটি সংখ্যা সাইন এম্বেড করা নিজেই একটি সিনট্যাক্স ত্রুটি নয় But তবে এটি কেবল একটি মন্তব্যের শুরু হিসাবে ব্যাখ্যা করা যায় না, তাই এটি স্বীকার করে ত্রুটি-প্রবণ #
আমার ক্ষেত্রে ত্রুটি পরবর্তী কারণে। আমি বিশ্বব্যাপী কমান্ড কার্যকর করার চেষ্টা করেছি অর্থাৎ যে কোনও লক্ষ্যের বাইরে।
UPD। বিশ্বব্যাপী কমান্ড চালানোর জন্য একটি সঠিকভাবে গঠন করতে হবে। উদাহরণস্বরূপ কমান্ড
ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME
হবে:
$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
আমার ক্ষেত্রে, আমি প্রকৃতপক্ষে একটি ট্যাব এবং পরের লাইনে কমান্ডটি অনুপস্থিতifeq
ছিল। শুরু করার মতো কোনও জায়গা ছিল না।
ifeq ($(wildcard $DIR_FILE), )
cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
হওয়া উচিত ছিল:
ifeq ($(wildcard $DIR_FILE), )
<tab>cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
নোট করুন <tab>
একটি প্রকৃত ট্যাব অক্ষর
আমার কিউমেক দ্বারা উত্পাদিত মেকফিলসে বিচ্ছিন্ন ফাইলটি ছিল। আমি কিউটি কোডটি অন্য একটি প্ল্যাটফর্মে পোর্ট করছিলাম। আমার কাছে কিউএমএএসইসিপেক বা মেক সেট নেই। আমি উত্তরটি পেয়েছি এখানে লিঙ্কটি রয়েছে:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
সুতরাং দৃশ্যতঃ সব আমার প্রয়োজন "বিল্ড অপরিহার্য" প্যাকেজ, তারপর চালানোর জন্য ছিল autoconf
প্রথম, যা তৈরি Makefile.pre.in
, তারপর ./configure
তারপর make
যা ঠিকভাবে কাজ ...
মেকফাইল কোড অনুসরণ করেছে:
obj-m = hello.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean