2012-12-03 86 views
6

我想通過閱讀STL源代碼以及調試它來深入學習C++,所以我想將libstdc++靜態鏈接到我的程序,並使用g++可以正常工作。但是,如何在llvm中使用clang++實現同樣的功能?如何將libstdC++靜態鏈接到鏗鏘聲++

換句話說,問題是,什麼是clang++相當於-static-libgcc

Makefile我使用

CXX=g++ 
CC=g++ 
LDFLAGS=-g -O0 -static-libgcc 
CFLAGS=-O0 -Wall 
CXXFLAGS=$(CFLAGS) 
+0

我不認爲靜態鏈接是你所需要的。無論是靜態還是動態,您都需要擁有庫的調試信息。你可以在不同的Linux發行版的不同地方找到它;一些靜態庫中包含調試信息,一些靜態庫中有一些沒有解析共享庫,另一些只是調試共享庫的信息(例如,Debian/Ubuntu通常會這樣做)。 –

+0

我已經嘗試過g ++和靜態鏈接工作,我猜這是因爲我的libstdC++。a在libstdC++。dylib中沒有被剝離。你的意思是我應該找到一個沒有被剝離的共享庫嗎? – Haocheng

回答

3

您正在尋找的標誌,在GCC和鐺,就是:-static-libstdc++

+1

這給出了一個警告「在編譯過程中未使用的參數:'-static-libstdC++''在Clang 4.2中。 – vitaut

+1

clang ++版本4.2.1在CentOS 7上說 'clang:warning:在編譯期間未使用的參數:'-static-libstdC++' 和靜態鏈接不會發生 - 有什麼方法可以解決嗎? – scrutari

+1

這是一個鏈接時間標誌,而不是編譯時標誌。如果你看看這個問題,'-static-libgcc'標誌被添加到'LDFLAGS'變量中,這個變量也應該被添加到這個變量中。 –