Ich versuche, ein Projekt zu kompilieren. Ich habe make
folgende Ausgabe verwendet und erhalten
g++ -g -Wall -std=c++11 -I include/ -o build/example.o -c example/example.cpp
as: unrecognized option '--64'
Der Fehler besagt, dass die Option --64
verwendet und nicht erkannt wird, solange sie nicht im Befehl enthalten ist.
Andere Vorkommen dieses Fehlers im Internet legen eine Änderung --64
in nahe --m64
. Dieses Problem hängt mit der verwendeten GCC-Version zusammen.
Aber in meinem Fall ist die Option nicht vorhanden. Wie kann dieser Fehler auftreten, wenn der Befehl die angegebene Option nicht enthält?
Bearbeiten: make -m
führt zur gleichen Ausgabe.
Und der Fehler tritt auch auf, wenn der g++-Befehl manuell ausgeführt wird.
Bearbeiten: Der Fehler wird im Terminal angezeigt, nachdem eine Datei als Quelle verwendet wurde: source setup.bash
(vom Projekt für einige Vorgänge benötigt)
Das Skript exportiert die folgende Variable, aber sie scheint nicht in Verbindung mit gcc zu stehen.
- OPENOCD_SCRIPTS
- IDF_PATH
- IDF_TOOLS_EXPORT_CMD
- IDF_PYTHON_INSTALL_CMD
- IDF_PYTHON_ENv_PATH
Es fügt auch einen Pfad hinzu zuPATH
Trotz dieser Informationen verstehe ich immer noch nicht, warum der Fehler auftritt.
Selbst wenn die GCC-Version aufgrund der hinzugefügten Pfade geändert wurde PATH
, ist die Option nicht Teil des Befehls.
Bearbeiten: Nach source setup.bash
,
gcc
ist immer noch das gleiche
$ type gcc
gcc is /usr/bin/gcc
$ gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
...
as
Änderungen
$ 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
...
Antwort1
gcc.gnu.orgbesagt, dass
gcc ist ein Treiberprogramm. Es führt seine Aufgabe aus, indem es eine Reihe anderer Programme aufruft, die die Arbeit des Kompilierens, Assemblierens und Verknüpfens übernehmen.
as
ist eines der von gcc aufgerufenen Programme.
Das setup.bash
Skript hat den Pfad nicht zu geändert, gcc
wohl aber für as
.
Der Fehler wird daher vom ersetzenden as
Programm ausgelöst.