ত্রুটি করুন: বিভাজক নিখোঁজ


উত্তর:


364

অনলাইন ম্যানুয়ালটিতে ইঙ্গিত হিসাবে , ত্রুটির জন্য সর্বাধিক সাধারণ কারণ হ'ল makeট্যাব অক্ষরের প্রত্যাশা করার সময় লাইনগুলি স্পেসে ইন্টেন্ট করা হয় ।

ঠিক

target: 
\tcmd

\tট্যাব কোথায় (ইউ + 0009)

ভুল

target:
....cmd

যেখানে প্রত্যেকে .একটি স্পেস (ইউ + 0020) উপস্থাপন করে।


4
আপনি অক্ষর ব্যবহারের ব্যবহার পরিবর্তন করতে .RECIPEPREFIX ব্যবহার করতে পারেন। দেখুন: gnu.org/software/make/manual/html_node/…
aseq

16

কেবল গ্রিনগুলির জন্য, এবং যদি অন্য কেউ একই ধরণের ত্রুটিতে চলে:

আমি কুখ্যাত "নিখোঁজ বিভাজক" ত্রুটি পেয়েছি কারণ আমি কোনও ফাংশনকে সংজ্ঞায়িত করার জন্য একটি বিধি প্রেরণ করেছি

($eval $(call function,args))

বরং

$(eval $(call function,args))

অর্থাৎ ($বদলে $(


কি? :) আমার ধারণা আপনার 0x20সেখানে "স্থান" ছিল না, এটা কি সঠিক?
ব্যবহারকারী 35443

3
@ ইউজার $
35443

8

এটি আপনার মেকফাইলে একটি সিনট্যাক্স ত্রুটি। ফাইলটি বা এর সম্পর্কিত অংশ (গুলি) না দেখে তার চেয়ে বেশি নির্দিষ্ট হওয়া খুব শক্ত।


5

আমার জন্য, সমস্যাটি ছিল যে আমার কাছে বহু-লাইন ভেরিয়েবল সংজ্ঞাতে # ...এমবেড করা কিছু শেষ-লাইন মন্তব্য define ... endefছিল। মন্তব্যগুলি সরানোর ফলে সমস্যাটি সরে গেছে।


ধন্যবাদ. আমি জানতাম না defineনির্দেশের মন্তব্যে আক্ষরিক আচরণ করা হয়। আসলে আচরণটি ডকুমেন্টেশনে ব্যাখ্যা করা হয়নি । (স্পষ্টতার জন্য: নির্দেশকের মধ্যে একটি সংখ্যা সাইন এম্বেড করা নিজেই একটি সিনট্যাক্স ত্রুটি নয় But তবে এটি কেবল একটি মন্তব্যের শুরু হিসাবে ব্যাখ্যা করা যায় না, তাই এটি স্বীকার করে ত্রুটি-প্রবণ #
one

3

আমার ত্রুটিটি বহু-লাইন এক্সটেনশান সহ একটি পরিবর্তনশীল ডিক্লেয়ারেশন লাইনে ছিল। "\" এর পরে আমার পিছনে স্থান রয়েছে যা এটি একটি অবৈধ লাইনের ধারাবাহিকতা তৈরি করেছিল।

MY_VAR = \
   val1 \ <-- 0x20 there caused the error.
   val2

1

আমার ক্ষেত্রে ত্রুটি পরবর্তী কারণে। আমি বিশ্বব্যাপী কমান্ড কার্যকর করার চেষ্টা করেছি অর্থাৎ যে কোনও লক্ষ্যের বাইরে।

UPD। বিশ্বব্যাপী কমান্ড চালানোর জন্য একটি সঠিকভাবে গঠন করতে হবে। উদাহরণস্বরূপ কমান্ড

ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME

হবে:

$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))

1

আমার ক্ষেত্রে একই ত্রুটি ঘটেছে কারণ কোলন :শেষ হিসাবে নিখোঁজ ছিল staging.deploy:। সুতরাং নোট করুন যে এটি সহজ বাক্য গঠন ভুল হতে পারে।


1

আমার ক্ষেত্রে, আমি প্রকৃতপক্ষে একটি ট্যাব এবং পরের লাইনে কমান্ডটি অনুপস্থিত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>একটি প্রকৃত ট্যাব অক্ষর


0

আমার ক্ষেত্রে, এই ত্রুটিটি নিছক জায়গার অভাবে হয়েছিল। আমার মেকফেলে ব্লক থাকলে আমার এটি ছিল:

if($(METHOD),opt)
CFLAGS=
endif

যা হওয়া উচিত ছিল:

if ($(METHOD),opt)
CFLAGS=
endif

যদি পরে একটি স্থান সঙ্গে।


0

আমার কিউমেক দ্বারা উত্পাদিত মেকফিলসে বিচ্ছিন্ন ফাইলটি ছিল। আমি কিউটি কোডটি অন্য একটি প্ল্যাটফর্মে পোর্ট করছিলাম। আমার কাছে কিউএমএএসইসিপেক বা মেক সেট নেই। আমি উত্তরটি পেয়েছি এখানে লিঙ্কটি রয়েছে:

https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5


-1

সুতরাং দৃশ্যতঃ সব আমার প্রয়োজন "বিল্ড অপরিহার্য" প্যাকেজ, তারপর চালানোর জন্য ছিল autoconfপ্রথম, যা তৈরি Makefile.pre.in, তারপর ./configureতারপর makeযা ঠিকভাবে কাজ ...


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.