Próbuję nauczyć się C++ głębiej, czytając źródło STL, a także debugując go, więc chcę połączyć statycznie libstdc++
z moim programem i działa dobrze przy użyciu g++
. Jednak, jak mogę osiągnąć to samo z clang++
w llvm?Jak połączyć libstdC++ statycznie z clang ++
Innym sposobem jest pytanie: co to jest odpowiednik -static-libgcc
?
Makefile
Używam
CXX=g++
CC=g++
LDFLAGS=-g -O0 -static-libgcc
CFLAGS=-O0 -Wall
CXXFLAGS=$(CFLAGS)
Nie sądzę łączenie statyczne jest to, czego potrzebujesz. Musisz mieć informacje debugowania biblioteki, bez względu na to, czy jest to statyczna czy dynamiczna. Możesz znaleźć to w różnych miejscach w różnych dystrybucjach Linuksa; niektóre mają statyczną bibliotekę z informacjami debugowania, inne mają gdzieś ukrytą bibliotekę współdzieloną, inne mają po prostu informacje debugowania dla wspólnej biblioteki (np. Debian/Ubuntu zwykle to robią). –
Próbowałem w g ++, i statyczne łącze działa, i myślę, że to dlatego, że mój libstdC++. A nie jest rozebrany podczas libstdC++. Dylib jest. Czy masz na myśli, że powinienem znaleźć wspólną bibliotekę, która nie jest pozbawiona? – Haocheng