0

我相信 -g 打开调试信息输出:

09-19 19:31:34.788: INFO/System.out(24948): /data/data/app/sdk/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I/data/data/app/sdk/hardware/arduino/cores/arduino -I/data/data/app/sdk/hardware/arduino/variants/standard /data/data/app/build/Blink.cpp -o /data/data/app/build/Blink.cpp.o
09-19 19:31:34.828: WARN/System.err(24948): /data/data/app/sdk/hardware/tools/avr/bin/avr-g++[1]: syntax error: ')' unexpected

不确定命令行是否正确构建,并且可能会遗漏一些参数,但它是arduino IDE 代码

为什么错误行号和列丢失,我该如何打开它?

4

1 回答 1

2

根据评论更新:

g++OP 已在 Linux 系统上安装了 MacOS可执行文件。Linux 系统无法将其识别为可执行文件,因此尝试将其作为 shell 脚本执行,从而导致误导性错误消息。


该特定错误消息:

syntax error: ')' unexpected

看起来像一个 shell 错误,而不是编译器错误。

在我的系统上,具有无关的 C++ 程序)导致 g++ 产生此消息:

c.cpp: In function ‘int main()’:
c.cpp:2:5: error: expected primary-expression before ‘)’ token
c.cpp:2:5: error: expected ‘;’ before ‘)’ token

请注意,消息包括行号和列号,就像 g++ 语法错误消息通常那样。

而带有无关的 Bourne shell 脚本)会产生如下消息:

./foo.sh: 3: ./foo.sh: Syntax error: ")" unexpected

这与您所看到的非常相似,但并不完全相同。(差异很容易由不同的实现引起sh。)

在某个地方,要么你有一个带有语法错误的 shell 脚本,要么你试图执行一个 shell 脚本以外的东西,就好像它是一个 shell 脚本一样。

您正在运行什么命令会产生此错误?是

/data/data/app/sdk/hardware/tools/avr/bin/avr-g++

一个适当的可执行文件?如果你跑步会发生什么

/data/data/app/sdk/hardware/tools/avr/bin/avr-g++ --version

从命令行?关于什么

file /data/data/app/sdk/hardware/tools/avr/bin/avr-g++ ?

从评论中,这个命令:

/data/data/app/sdk/hardware/tools/avr/bin/avr-g++ --version

产生相同的错误消息:

syntax error: ')' unexpected).

这意味着该avr-g++命令是可执行的,但系统无法将其识别为可执行文件,因此它试图将其作为 shell 脚本运行。

你在什么操作系统上运行这个?该avr-g++命令是打算在主机系统上运行还是在目标上运行(g++在 Arduino 上运行似乎不太可能)。比较输出

file /data/data/app/sdk/hardware/tools/avr/bin/avr-g++

例如,

file /usr/bin/g++

或者,如果它是符号链接,则指向它指向的任何实际文件(/usr/bin/g++-4.7在我的系统上)。关键是要确定这是什么类型的文件avr-g++,并将其与已知对您的系统正确的可执行文件进行比较。(只是为了 100% 确定,请尝试/usr/bin/g++ --version。)

例如,在我的系统上,我得到:

$ file /usr/bin/g++
/usr/bin/g++: symbolic link to `g++-4.7'
$ file /usr/bin/g++-4.7
/usr/bin/g++-4.7: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xac398e1061dbb1a6f8da022f0a1616f15cf07085, stripped
于 2013-09-19T20:08:08.083 回答