Wenn g statische Links Pthread sind, was einen Segmentierungsfehler verursacht: Erklärung und Lösung
Problem:
Beim Kompilieren eines C-Programms mit g und dem Flag -pthread zum Verknüpfen mit der pthread-Bibliothek, aber statisch (-static), stößt das Programm auf einen Segmentierungsfehler.
Erklärung:
Schwache Symbole:
Dynamische Verlinkung vs. Statische Verlinkung:
Unvollständige Linkauflösung:
Lösung:
An Erzwingen Sie, dass der Linker alle Symbole aus der pthread-Bibliothek in einem statisch verknüpften Programm betrachtet. Verwenden Sie:
g++ -o one one.cpp -Wall -std=c++11 -O3 -static -pthread \ -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
Zusätzliche Hinweise:
WL_WHOLE_ARCHIVE_HACK="-Wl,--whole-archive" WL_NO_WHOLE_ARCHIVE_HACK="-Wl,--no-whole-archive" AC_SUBST(WL_WHOLE_ARCHIVE_HACK) AC_SUBST(WL_NO_WHOLE_ARCHIVE_HACK) mytarget_LDADD = @WL_WHOLE_ARCHIVE_HACK@ -lpthread @WL_NO_WHOLE_ARCHIVE_HACK@
Das obige ist der detaillierte Inhalt vonWarum führt mein C-Programm mit statischer Verknüpfung und Pthreads zu einem Segmentierungsfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!