Makefile上缺少分隔符

时间:2016-09-25 04:14:16

标签: linux makefile autotools

我现在遇到autotools生成的Makefile问题,它首先看起来像this。当我尝试make时出现错误:

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   }; \

我认为很多事情都是这样的:

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.*$$//"; \$ 

但仍然有同样的错误。

有没有人可以给我一些关于如何解决它的问题?

1 个答案:

答案 0 :(得分:0)

(注意:我不确定StackOverflow与SuperUser中的这是否正确。)

如果您对Makefile进行了修改,那么它将无用,因为它只会从Makefile.in重新生成,而这一个又会从Makefile.am生成

检查您的Makefile.am文件,并将-static与其他所有内容放在同一行;发生的事情是它在前一行(\)的末尾没有连续符号,因此变量定义不会继续。因此,它试图将其解析为规则,但事实并非如此。