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 システムはそれを実行可能ファイルとして認識しなかったため、シェル スクリプトとして実行しようとしたため、誤解を招くエラー メッセージが表示されました。


その特定のエラー メッセージ:

syntax error: ')' unexpected

コンパイラ エラーではなく、シェル エラーのように見えます。

私のシステムでは、無関係な 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 シェル スクリプトは、)次のようなメッセージを生成します。

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

これは、あなたが見たものと非常に似ていますが、まったく同じではありません。(違いは、 の実装の違いによって簡単に発生する可能性がありshます。)

どこかで、構文エラーのあるシェル スクリプトがあるか、シェル スクリプト以外のものをシェル スクリプトであるかのように実行しようとしています。

このエラーを生成するコマンドを実行していますか? は

/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++コマンドは実行可能ですが、システムによって実行可能ファイルとして認識されないため、シェル スクリプトとして実行しようとしています。

これを実行しているOSは何ですか?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 に答える