我正在尝试使用提供的install.readme中的指示将libssh-0.8.5安装到Ubuntu 16.04上。我按照说明执行了每个步骤,但是执行make命令构建项目后出现错误。错误如下:
[ 65%] Built target exec
tests/CMakeFiles/ssh_ping.dir/flags.make:8: *** target pattern contains no '%'. Stop.
CMakeFiles/Makefile2:1696: recipe for target 'tests/CMakeFiles/ssh_ping.dir/all' failed
make[1 ]: *** [tests/CMakeFiles/ssh_ping.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
我已经研究发现,这可能是我的make文件中某处出现语法错误,导致构建无法继续进行。我查看了给出问题的目标make文件,但似乎无法确定导致错误的原因。
flag.make文件如下:
问题似乎来自于突出显示的粗线。谁能看到我想念的东西?
答案 0 :(得分:2)
在StackOverflow(以及大多数其他类似的网站)上,请剪切文本并将其粘贴到您的问题中,并使用适当的降价工具设置其格式,而不是附加包含文本的图像。后者很难阅读,我们无法将其剪切并粘贴到答案中以显示出问题所在。
您不能在换行符的生成文件中嵌入换行符。 Make完全面向行,根本不分析引号。为此:
FOO = "bar
biz"
不被认为是将包含换行符的值分配给变量FOO
的一行。相反,它被认为是两行,第一行是将值"bar
赋给变量FOO
,第二行是语法错误,因为make无法将字符串baz"
解析为有效的命令。
答案 1 :(得分:0)
显然ssh
没有正确安装在您的平台上,而cmake
依赖它。我很惊讶cmake
本身在生成flag.make
时没有引发错误,但是由于我不使用cmake
,所以我不知道它是否是正常行为。 / p>
无论如何,当cmake
尝试检测您的OpenSSH版本时,它是通过运行ssh
来完成的,并收到一条错误消息,而不是所需的版本号。此错误消息已插入到生成的flag.make
Makefile中。因为此错误消息的第二行(如果您的问题不在图片中,我可以在此处复制粘贴)
a: b: c
窗体,make试图将其解释为static pattern rule,但由于它不包含%
通配符,因此make出现语法错误。
如果您尝试在命令行上运行/usr/bin/ssh -V
会怎样?