Yanıtlar:
Çevrimiçi kılavuzda belirtildiği gibi, bu hatanın en yaygın nedeni, make
sekme karakterleri beklenirken satırların boşlukla girintidir .
target:
\tcmd
\t
SEKME (U + 0009) nerede
target:
....cmd
burada her biri .
bir MEKANI temsil eder (U + 0020).
Sırıtışlar için ve başka birinin benzer bir hatayla karşılaşması durumunda:
Bir işlevi tanımlayan bir kural çağırdı çünkü rezil "eksik ayırıcı" hatası aldım
($eval $(call function,args))
ziyade
$(eval $(call function,args))
yani ($
yerine $(
.
0x20
orada "alanınız" yoktu, doğru mu?
$
Benim için sorun, # ...
bir define ... endef
çok satırlı değişken tanım içine gömülü bazı satır sonu yorum vardı . Yorumları kaldırmak sorunu ortadan kaldırdı.
define
Direktifteki yorumların tam anlamıyla ele alındığını bilmiyordum . Aslında davranış olduğu değil açıklamak belgelere . (Açıklık için: #
Yönerge içine bir sayı işareti gömmek bir sözdizimi hatası değildir. Ancak, yalnızca bir yorumun başlangıcı olarak yorumlanmaz, bu yüzden bunu yapmak hataya yatkındır.)
Benim durumumda bir sonraki hataya neden oldu. Ben herhangi bir hedefin dışında yani küresel komutları yürütmeye çalıştım.
UPD. Komutu global olarak çalıştırmak için, uygun şekilde oluşturulmalıdır. Örneğin komut
ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME
olacaktı:
$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
Benim durumumda, aslında arasında bir sekme ve sonraki satırda komut eksiktiifeq
. Başlamak için boşluk yoktu.
ifeq ($(wildcard $DIR_FILE), )
cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
Olması gerekirdi:
ifeq ($(wildcard $DIR_FILE), )
<tab>cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
Not <tab>
gerçek bir sekme karakteridir
Qmake tarafından oluşturulan Makefiles eksik ayırıcı dosya vardı. Qt kodunu farklı bir platforma taşıyordum. QMAKESPEC ve MAKE ayarlamam yoktu. İşte cevabı bulduğum bağlantı:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
Yani görünüşe göre, gerekli tüm ı "yap-esansiyel" paket, daha sonra çalışmasına oldu autoconf
yapılan ilk Makefile.pre.in
ardından ./configure
sonra make
mükemmel çalışıyor ki ...
Aşağıdaki Makefile kodu çalıştı:
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