GNU Make "Abbrechen Trap: 6" nach gcc call aber Aufruf ist gültig, wenn sie alleine ausgeführt wird

8

Ich verwende GNU Make, um ein C / C ++ - Projekt zu erstellen, das viele Leute benutzen werden. Das Makefile versucht allgemein zu sein, da es in diesem Projekt viele optionale Dateien gibt und jeder Benutzer diese Dateien über eine MATLAB-Schnittstelle auswählt, die dann über Kommandozeilenargumente dem Makefile zur Verfügung gestellt werden (make target OPTS = 'XYZ' etc ...).

Wenn ich das Makefile verwende, identifiziert es korrekt die korrekten Objektabhängigkeiten und sucht dann nach den Quellvoraussetzungen für diese Objekte und erstellt sie. Bei jedem Versuch, eine Objektregel auszuführen, erhalte ich jedoch direkt nach dem gcc-Aufruf die Fehlermeldung "Abort trap: 6".

Das Makefile ist wie folgt

%Vor%

und ein Beispiel dafür, was ich bekomme ist:

%Vor%

Wenn ich jedoch diesen GENAUEN gleichen gcc -Aufruf nehme und ihn in der Befehlszeile austrage (einfach kopieren und einfügen), wird die Datei korrekt kompiliert und die Objektdatei in den obj1-Ordner gelegt.

Ich habe versucht, "make-d" zu sehen, um zu sehen, ob ich auch noch etwas finden kann. Da diese Ausgabe verrückt ist, lautet das Wesentliche:

%Vor%

an diesem Punkt endet die Ausgabe. Ich habe auch versucht, make -k auszuführen, um zu sehen, was nach dem ersten Fehler passiert. Jede einzelne Quelldatei erzeugt das gleiche Ergebnis. Auch hier ist jede Quelldatei mit dem genauen Aufruf kompilierbar, der unabhängig voneinander verwendet wird.

Ich bin an diesem Punkt völlig verloren und es gibt sehr wenig Informationen darüber, was "Abort falle: 6" in diesem Zusammenhang bedeutet.

Ich verwende Mac OSX 10.7 mit gcc-4.2, das über Xcode installiert wurde.

Mir ist klar, dass es derzeit keine Regel für .cpp-Dateien gibt, ich habe derzeit keine .cpp-Quelldateien zu kompilieren, obwohl es in der Zukunft wahrscheinlich so sein wird, weshalb es eine Supportstruktur dafür gibt .

Vielen Dank im Voraus für jeden, der mir helfen kann.

BEARBEITEN: Es wurde eine fortlaufende Zeile von der "make -d" Ausgabe hinzugefügt. EDIT: Lösung hinzugefügt (verschoben zu einer Antwort)

    
Alex Buck 21.02.2013, 21:52
quelle

2 Antworten

5

Mit Hilfe beantwortet meine eigene Frage. Gelöst: Sehen Sie zuerst @ MadScientists Kommentar für was "Abort Trap: 6" ist.

Angesichts dieses Hinweises erkannte ich, dass ich eine Variable verwende, die mit einer Systemvariablen $ (PATH) verwechselt werden könnte. Es scheint, dass Make die folgende Zeile nicht so interpretierte, wie ich es erwartet hatte:

%Vor%

Es sieht so aus, als ob es eine Interferenz mit der Systemvariablen $ (PATH) gibt, die möglicherweise Probleme verursacht hat. Durch einfaches Ändern der Variablen vpath in $ (SRC_PATH) wird der Konflikt mit der Systemvariablen und mögliche Interferenzen beseitigt, wodurch das Problem behoben wird.

%Vor%

Gelernte Lektion: Seien Sie vorsichtig mit Variablennamen und wissen Sie, was Ihre Umgebungsvariablen sind.

Schenken Sie @MadScientist für das Aufzeigen von "Abort Trap: 6" und das Vorschlagen von Umweltproblemen.

    
Alex Buck 22.02.2013 14:34
quelle
0

Wenn es eine Assert-Methode in Ihrem Code gibt, können Sie diesen Fehler erhalten (Abbruch-Trap: 6).

zum Beispiel:

%Vor%

und wenn der

%Vor%

Sie erhalten einen solchen Fehler, wenn Sie das Makefile

aufrufen     
Erdem Meral 02.02.2017 17:53
quelle

Tags und Links