【问题标题】:missing separator on MakefileMakefile 上缺少分隔符
【发布时间】:2016-09-25 04:14:15
【问题描述】:

我现在遇到了自动工具生成的 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.*$$//"; \$ 

但还是出现同样的错误。

有人可以给我一些关于如何解决它的 ieda 吗?

【问题讨论】:

  • 如果生成的makefile坏了,可能是makefile.am坏了。是你写的还是来自另一个项目?

标签: linux makefile autotools


【解决方案1】:

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

如果您编辑了Makefile,它将没有用,因为它只会从Makefile.in 重新生成,而那个又会从Makefile.am 生成。

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

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多