g++ 認識されないオプションはコマンドの一部ではありません

g++ 認識されないオプションはコマンドの一部ではありません

プロジェクトをコンパイルしようとしていますが、make次の出力が得られました

g++ -g -Wall -std=c++11 -I include/ -o build/example.o -c example/example.cpp
as: unrecognized option '--64'

このエラーは、オプション--64が使用されているが、コマンド内に存在しないため認識されないことを示しています。このエラーがオンラインで他に発生している場合は、に
変更することを提案しています。この問題は、使用されている gcc のバージョンに関連しています。--64--m64

しかし、私のケースではオプションは存在しません。コマンドに指定されたオプションが含まれていないのに、なぜこのエラーが表示されるのでしょうか?

編集:make -m結果は同じ出力になります。
また、g++ コマンドを手動で実行した場合でもエラーが発生します。

編集: ファイルをソースした後、ターミナルにエラーが表示されます: source setup.bash(プロジェクトで何らかの操作に必要)

スクリプトは次の変数をエクスポートしますが、gcc とは関係がないようです。

  • OPENOCD_スクリプト
  • パス
  • IDF_TOOLS_EXPORT_CMD
  • IDF_PYTHON_INSTALL_CMD
  • 環境変数

また、いくつかのパスを追加しますPATH

この情報があっても、なぜエラーが発生するのかまだわかりません。
にパスが追加されたために gcc バージョンが変更されたとしてもPATH、オプションはコマンドの一部ではありません。

編集: その後source setup.bash

gcc同じまま

$ type gcc
gcc is /usr/bin/gcc
$ gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
...

as変更

$ type as
as is /usr/bin/as
$ as --version
GNU assembler (GNU Binutils for Ubuntu) 2.34
...
$ type as
as is /path/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/bin/as
$ as --version
GNU assembler (crosstool-NG esp-2020r3) 2.31.1
...

答え1

gcc.gnu.orgと述べています

gcc はドライバー プログラムです。一連の他のプログラムを呼び出して、コンパイル、アセンブル、リンクの作業を実行します。

asgcc によって呼び出されるプログラムの 1 つです。

スクリプトsetup.bashは へのパスを変更しませんでしたgccが、 のパスを変更しましたas
そのため、置換プログラムによってエラーがスローされますas

関連情報