2016-09-25 199 views
0

我現在遇到autotools生成的Makefile問題,它首先看起來像this。當我試圖make錯誤arised:Makefile上缺少分隔符

Makefile:327: *** missing separator. Stop. 

然後,我嘗試了以下變化:

326,327c326 
< LDFLAGS = -Wl,-O1,--sort-common,--as-needed,-z,relro -L/home/tjm/tmp/fake-root/libgd/usr/local/lib/ -L /home/tjm/tmp/fake-root/libpng/usr/local/lib -L /home/tjm/tmp/fake-root/freetype/usr/local/lib -L /home/tjm/tmp/fake-root/libpng/usr/local/lib -L /home/tjm/tmp/jpeg-6b 
<  -static 
--- 
> LDFLAGS = -Wl,-O1,--sort-common,--as-needed,-z,relro -L/home/tjm/tmp/fake-root/libgd/usr/local/lib/ -L /home/tjm/tmp/fake-root/libpng/usr/local/lib -L /home/tjm/tmp/fake-root/freetype/usr/local/lib -L /home/tjm/tmp/fake-root/libpng/usr/local/lib -L /home/tjm/tmp/jpeg-6b -static 

但是,這一次,我得到這個錯誤:

Making all in intl 
Makefile:35: *** missing separator. Stop. 
make[1]: *** [Makefile:582: all-recursive] Error 1 
make: *** [Makefile:489: all] Error 2 

的相關線看起來像這些:

32 skip_next=no; \ 
33 strip_trailopt() \ 
34 { \ 
35  flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 
36 }; \ 

我teird了很多事情,如:

34 { flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; }; \ 

34 { \ 
35  flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; }; \ 

33 strip_trailopt() { flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; }; \ 

35 ^Iflg=printf '%s\n' "$$flg" | sed "s/$$1.*$$//"; \$ 

但仍然得到了同樣的錯誤。

有沒有人可以給我一些關於如何解決它的ieda?

+0

如果生成的makefile被破壞,可能意味着makefile.am已損壞。你是寫它還是來自另一個項目? – user657267

回答

0

(注:我不知道這是否是正確的StackOverflow上VS超級用戶)

如果您編輯的Makefile,因爲它只會重新生成出來的Makefile.in它會不會有用,而這個反過來將會產生出Makefile.am

檢查您的Makefile.am文件,並將-static與其他所有內容放在同一行;發生的是在前一行末尾沒有延續符號(\),所以變量定義不會繼續。正因爲如此,它試圖將其解析爲一條規則,但事實並非如此。