语法错误:单词意外(期待“)”)

时间:2016-04-19 13:53:54

标签: arm qt4

简短的问题 - 在linux中,每当我们收到以下错误 “语法错误:单词意外(期待”)“)” ,它通常意味着什么?

详细问题 - 我一直在尝试按照Ubuntu 10.04上的Sourcery工具链交叉编译Qt-4.6。我按照链接compiling Qt-4.6中提到的确切步骤进行操作。但是我在./configure步骤中得到了以下错误 -

/home/weds/qt-everywhere-opensource-src-4.6.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")

在互联网上搜索我发现了很多有关此错误的帖子。阅读所有这些内容。但仍然无法知道这个错误是什么以及如何解决它。如果有人帮助我理解这个错误,我会很高兴。

P.S 1 - Sourcery工具链出现在/ opt /文件夹中,我的PATH变量正确指向它。 P.S 2 - 此工具链未由我手动安装。相反,它是由供应商提供的.tgz文件,我在/ opt /文件夹中提取。

5 个答案:

答案 0 :(得分:8)

这是Almquist shell或其任何衍生产品(例如dash(和dash碰巧是Ubuntu 10.04上/bin/sh的默认实现)报告的错误在解析期望)的脚本的语法时找到单词,例如在这种情况下声明:

$ dash -c 'case a in b c) :; esac'
dash: 1: Syntax error: word unexpected (expecting ")")

那是因为在b之后,唯一预期的是),(虽然实际上|也是允许的),因此c字是意料之外的。

$ dash -c 'myfunc( something'
dash: 1: Syntax error: word unexpected (expecting ")")

可能发生这种情况的一种情况是,脚本是通过Microsoft OS写入或传输的,其中文本行结尾是CRLF而不是LF。

A

case a in b) cmd1;;
          c) cmd2
esac
在MS-DOS上编写的

脚本将显示为:

case a in b) cmd1;;<CR>
          c) cmd2<CR>
esac<CR>

在Unix上,c<CR>字后面是一个额外的

此处不太可能,因为您的错误报告问题出现在脚本的第一行,大多数脚本都以#! /path/to/interpreter she-bang行开头。

另一种可能性是,您尝试运行的脚本是基于shbash的假设编写的,并使用了不可移植到其他sh实现的构造。< / p>

由于您使用的是过时且不再维护的操作系统,因此您可能遇到该版本dash中的错误。您可以运行dpkg-reconfigure dash并告诉系统不要将dash用于sh(而是使用bash)以查看是否有帮助。

再次不太可能出现在第一行。

更有可能的是,qmake文件不是脚本,而是系统无法识别的二进制可执行文件,例如因为它是错误体系结构的二进制格式或者它转移已被破坏。

在这种情况下,当系统无法将其识别为本机可执行文件时,调用应用程序将尝试在其上运行sh,就像它是一个shell脚本一样,并且存在{{1}文件中的字符可能导致(失败并出现此类错误。

在我的系统上:

dash

如果您查看$ dash /bin/touch /bin/touch: 1: /bin/touch: Syntax error: word unexpected (expecting ")") 的内容,就好像它是一个脚本,您会看到:

/bin/touch

答案 1 :(得分:2)

对此的回答似乎发布在您链接的说明中。

不可否认,这是一个long way down in the comments,但搜索^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^B^@>^@^A^@^@^@5&@^@^@^@^@^@@^@^@^@^@^@^@^@(ô^@^@... 并不需要很长时间。

引用:

  

Tej说:2013年1月4日下午12:20

     

好的,我已经解决了这个问题。非常不幸的是,人们没有   告诉实际上是什么问题。问题是我们必须使用Host   QMAKE。无论出口什么(出口   PATH = / usr / local / arm / 4.3.2 / bin:$ PATH等)我们在tslib期间执行了   安装,我们必须撤消所有这些。多数民众赞成。

     

希望能帮到某人

如果不清楚, Tej 表明您似乎正在尝试在主机系统上运行交叉编译的qmake: Syntax error: word unexpected

答案 2 :(得分:1)

99%这是一个错误的文件传输/ ascii /二进制模式

尝试直接在目标系统上提取工具链

答案 3 :(得分:0)

出现此问题时,我正在Ubuntu 18.04上编写C ++程序。原因是程序的文件名包含字符“(”和“)”。重命名文件后,它对我有用。

答案 4 :(得分:0)

对我来说奇怪的修复是删除 package-lock.json 和 node_modules 文件夹,然后再次构建 docker 镜像