`/bin/bash:-c:第13行:语法错误:意外的文件结尾`更改Makefile中的变量时出现模糊错误

`/bin/bash:-c:第13行:语法错误:意外的文件结尾`更改Makefile中的变量时出现模糊错误,bash,makefile,autotools,automake,Bash,Makefile,Autotools,Automake,我发生了一件奇怪的事情,这似乎与我后来犯的错误完全无关 我的自动工具生成系统工作得很好,但如果我在生成文件中更改为使用$(top\u builddir)而不是$(top\u srcdir),则生成开始以这种方式失败: ... /usr/bin/mcs -r:/usr/lib/pkgconfig/../../lib/cli/glib-sharp-3.0/glib-sharp.dll -out:gobject-intptr-ctor-verifier.exe GObjectIntPtrCtorVer

我发生了一件奇怪的事情,这似乎与我后来犯的错误完全无关

我的自动工具生成系统工作得很好,但如果我在生成文件中更改为使用
$(top\u builddir)
而不是
$(top\u srcdir)
,则生成开始以这种方式失败:

...
/usr/bin/mcs -r:/usr/lib/pkgconfig/../../lib/cli/glib-sharp-3.0/glib-sharp.dll -out:gobject-intptr-ctor-verifier.exe GObjectIntPtrCtorVerifier.cs
Making all in Hyena
/bin/bash: -c: line 13: syntax error: unexpected end of file

这个单一的改变是如何导致这个问题的,以及如何调试这个问题?如何知道bash试图解释什么文件?我在这里不知所措。

我会尝试跟踪执行的命令。也许
make
可以修改为更详细。否则我建议
strace

original_command='make all' # or whatever it was you executed

strace -s2000 -eexecve -o/tmp/make.commands -f $original_command

然后查看文件
/tmp/make.commands
,搜索bash,特别是搜索13行长的内联shell脚本。

很高兴您解决了问题。在更一般的情况下,此错误和其他类似错误通常是由自动生成文件中的语法错误导致的,该错误进入生成文件。有时会报告Makefile中的行号,因此您可以检查生成的Makefile;你的情况不是这样的


make-n
可以帮助您打印出
make
在没有实际执行的情况下执行的每个命令。

这可能是UNIX/Windows的行尾问题吗?不,我一直在Linux中,如果是,我应该查看哪个文件?从错误消息中根本不清楚我不确定-我没有查看您链接到的文件。如果你能将Makefile简化为一个最小的可复制测试用例,并将其包含在这里,这将非常有用。简化为一个最小的测试用例需要很长的时间,我会在这样做时发现问题,我主要是在stackoverflow中询问,看它是否对某人产生了影响,或者了解到调试它的快捷方式,如何指示/bin/bash告诉我它正在查找的文件??