我正在尝试从源代码构建mysql-workbench(对于32位Fedora 22)。 经过多次尝试和修复,我收到以下错误:
plugins/migration/CMakeFiles/wbcopytables-bin.dir/build.make:163: *** target pattern contains no '%'. Stop.
行build.make:163是
plugins/migration/wbcopytables-bin: /bin/sh:\ /root/linux-res-6.3/usr/bin/iodbc-config:\ No\ such\ file\ or\ directory
你是否看到任何拼写错误,关于Make及其Static Pattern Rules的语法?或者我是在完全错误的轨道上?
另外,有没有办法检查第163行的修正而不构建整个.rpm(花费近1小时)?
米。
答案 0 :(得分:1)
由于问题中没有给出足够的信息,所以给出了这样的答案,理由是它很容易以似乎模仿168中的第168行的方式重现错误信息。
给定一个包含构造的 Makefile :
this: that: somethingelse:
echo the stuff
问题结果中的错误消息:
$ make this
Makefile:1: *** target pattern contains no `%'. Stop
此外,由于第168行:
plugins/migration/wbcopytables-bin: /bin/sh:\ /root/linux-res-6.3/usr/bin/iodbc-config:\ No\ such\ file\ or\ directory
看起来非常像:
this: that: somethingelse:
build.make 似乎是由遇到错误和输出的某个脚本生成的:
/bin/sh: /root/linux-res-6.3/usr/bin/iodbc-config: No such file or directory
进一步看来,所述脚本可能由于某种原因将 stderr 重定向到 stdout 或者用于生成 build.make ,结果是生成的文件损坏而产生此错误。
当然,所有这些都预示着很多,这个问题提供的上下文信息太少,但肯定这种解释似乎是合理的。
在一个真正的 Makefile 中,人们可以通过删除除最终目标名称以外的所有冒号来纠正这种情况,但OP的文件显然已被泄露,因为错误信息是最不可能的。打算成为目标名称。