Hata yap: eksik ayırıcı


Yanıtlar:


364

Çevrimiçi kılavuzda belirtildiği gibi, bu hatanın en yaygın nedeni, makesekme karakterleri beklenirken satırların boşlukla girintidir .

Doğru

target: 
\tcmd

\tSEKME (U + 0009) nerede

Yanlış

target:
....cmd

burada her biri .bir MEKANI temsil eder (U + 0020).


4
Kullanılan karakterleri değiştirmek için .RECIPEPREFIX kullanabilirsiniz. Bakınız: gnu.org/software/make/manual/html_node/…
aseq

16

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 $(.


Ne? :) Sanırım 0x20orada "alanınız" yoktu, doğru mu?
user35443

3
@ user35443 Yerleşimi$
smac89

8

Bu, Makefile'nizdeki bir sözdizimi hatasıdır. Dosyanın kendisini veya ilgili bölümlerini görmeden bundan daha spesifik olmak oldukça zordur.


5

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ı.


Teşekkür ederim. defineDirektifteki 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.)
ynn

3

Benim hatam, çok satırlı bir uzantıya sahip bir değişken bildirim satırında oldu. Ben "\" sonra geçersiz bir satır devam yapan bir boşluk var.

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

1

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))

1

Benim durumumda, aynı hataya neden oldu çünkü kolon :sonunda olduğu gibi eksikti staging.deploy:. Kolay sözdizimi hatası olabileceğini unutmayın.


1

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


0

Benim durumumda, bu hata sadece bir alanın olmamasından kaynaklandı. Ben bunu makefile blok halinde vardı:

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

olması gereken:

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

sonra bir boşluk ile.



-1

Yani görünüşe göre, gerekli tüm ı "yap-esansiyel" paket, daha sonra çalışmasına oldu autoconfyapılan ilk Makefile.pre.inardından ./configuresonra makemükemmel çalışıyor ki ...


-2

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.