2016-09-25 104 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与其他所有内容放在同一行;发生的是在前一行末尾没有延续符号(\),所以变量定义不会继续。正因为如此,它试图将其解析为一条规则,但事实并非如此。