collect2: Fehler: ld beendet mit signal 11 [Segmentation fault], core dumped
War ich lernen, OpenGL mit GLFW, und nicht über ein großes Verständnis des makefiles an der Zeit. Ich hatte OpenGL zu arbeiten, aber ich beschloss, zu lernen, makefiles mehr. Ich kam mit diesem nach einer Vielzahl von websites, Stunden, und Versuch und Irrtum:
EXENAME = "OpenGL Demo"
CC = gcc
SRCS = ../src/OpenGLDemo.c
OBJS = $(SRCS: .c = .o)
CFLAGS = -Wall -g -c
LIBS = -L./libs -lglfw3 C:/Windows/SysWOW64/opengl32.dll C:/Windows/SysWOW64/glu32.dll
all: opengldemo exe
exe: $(OBJS)
$(CC) $(OBJS) -o $(EXENAME) $(LIBS)
opengldemo: ../src/OpenGLDemo.c
$(CC) $(CFLAGS) ../src/OpenGLDemo.c
clean:
rm -f $(EXENAME)
rebuild: clean all
Aber, wenn ich kompiliere, gibt es diese Fehlermeldung, wenn er versucht, erstellen Sie die ausführbare Datei:
collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped
makefile:11: recipe for target 'exe' failed
make: *** [exe] Error 1
Tut es erstellen Sie eine ausführbare Datei, aber mein computer sagt, er kann es nicht benutzen.
Ich habe versucht, die Suche im internet und fand gcc bug-reports einschließlich dieser Fehler. Es ist wahrscheinlich etwas blöd, dass ich Tue, um diese Fehler.
Wie behebe ich diesen Fehler, und was bedeutet es?
EDIT: Volle Leistung:
make
gcc -Wall -g -c ../src/OpenGLDemo.c
gcc ../src/OpenGLDemo.c -o "OpenGL Demo" -L./libs -lglfw3
C:/Windows/SysWOW64/opengl32.dll C:/Windows/SysWOW64/glu32.dll
cygwin warning:
MS-DOS style path detected: C:/Windows/SysWOW64/opengl32.dll
Preferred POSIX equivalent is: /cygdrive/c/Windows/SysWOW64/opengl32.dll
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped
makefile:11: recipe for target 'exe' failed
make: *** [exe] Error 1
Das ist ziemlich genau die Ausgabe. Ich werde noch den rest, aber da Sie gefragt.
make
sollte aber die Ausgabe der Befehle läuft es zumindest.Haben Sie versuchen, die Festsetzung, dass Pfadnamen es ist die Warnung, die Sie über?
Wenn ein Teil der toolchain (compiler, linker, make, was auch immer) abstürzt, es sind nicht die Programmierer Schuld. Was dumme Dinge, die Sie tun, die Werkzeuge sollten nie Abstürzen.
InformationsquelleAutor Znapi | 2014-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bedeutet es, dass die
ld
tool oder eine Ihrer Abhängigkeiten ist ein Fehler, der führt zu einem ungültigen Speicherzugriff (segmentation fault), auf dem das Betriebssystem killt den Prozess mit SIGSEGV (signal 11). Sollte es nicht Abstürzen, unabhängig von deinem build setup.Sollten Sie wahrscheinlich einen bug-report für
ld
mit Ihrer Linux-distribution, Verkäufer oder direkt an den Verkäufer derld
tool (in der Regel GNU falls Ihrld
tool ist von der GNU binutils).Es gibt keine einfache Lösung. Entweder starten Sie das Debuggen oder Holen Sie sich eine neue
ld
. Aber da Sie zu sein scheinen mit cygwin beide Lösungen könnten problematisch sein. Auf Linux würde ich anfangen zu Debuggen mithilfestrace -f
odervalgrind --track-origins=yes --trace-children=yes
und dergleichen, aber auf cygwin könnte dies nicht eine option sein. Jedoch, du bist wahrscheinlich besser vertraut mit cygwin, als ich bin.Vor kurzem erhielt ich eine ähnliche Fehlermeldung, und kann bestätigen, dass es ein problem mit cygwin. Ich kopierte das ganze Projekt zu einem echten Linux-Rechner, und alles kompiliert einwandfrei.
InformationsquelleAutor jotik
Stieß ich auf genau den gleichen Fehler.
Ich entwickle unter Windows und Linux zur gleichen Zeit, und verwenden Sie Filezilla zu übertragen meine Dateien. Den code eingebaut, die vorher auf Windows mit Cygwin, würde aber nicht nach dem herunterladen von Dateien von meinem Linux-host.
Wurde der Prozess baut auf Windows ==> upload auf Linux und erstellen ==> ein paar änderungen ==> download für Windows und erstellen ==> Fehlermeldung.
Dann dämmerte es mir, hatte ich dann über die Linux-Objekt-Dateien mit der Quelle, so dass ich gelöscht, alle die .o Dateien und das bauen ging gut.
Kann ich nicht sagen, ob dies war @Zaerospi das problem oder nicht, aber es war wohl auch die Quelle meiner Fehler.
Jemand anderes mit dem gleichen Fehler möchten möglicherweise versuchen, löschen Objekt-Dateien und den Wiederaufbau.
data
. Wenn Sie etwas anderes sagen, können Sie linux-Verwandtes versehen. Ein linux-32-bit-ex: "ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped` und 64-bit ist ähnlich.InformationsquelleAutor