2012-12-03 15 views
6

STL kaynağının yanı sıra hata ayıklamasını okuyarak C++ derinliğini öğrenmeye çalışıyorum, bu yüzden libstdc++ programımı statik olarak bağlamak istiyorum ve g++ kullanarak iyi çalışıyor. Ancak, aynı şeyi 0vile llvm'de nasıl elde edebilirim?libstdC++ ile statik olarak clang ++ bağlanır.

Başka bir deyişle, soru clang++-static-libgcc eşdeğeri nedir? Ben

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

ben statik bağlama neye ihtiyacınız olduğunu sanmıyorum. Statik veya dinamik olsun, kütüphane için hata ayıklama bilgisine sahip olmanız gerekir. Bunu farklı Linux dağıtımlarında farklı yerlerde bulabilirsiniz; bazılarında hata ayıklama bilgisine sahip statik bir kütüphane, bazılarının bir kısmı paylaşılmamış ortak kütüphanesi vardır, bazıları sadece paylaşılan kütüphane için bilgi debuguna sahiptir (ör. Debian/Ubuntu genellikle bunu yapar). –

+0

g ++ ve statik bağlantı çalışmalarında denedim ve sanırım çünkü libstdC++ benim libstdC++. Soyulmamış bir paylaşımlı kütüphane bulmalı mıyım? – Haocheng

cevap

3

aradığınız bayrak kullanıyorum

Makefile, GCC ve Clang hem şöyledir: -static-libstdc++

+1

Bu, Clang 4.2'de "derleme sırasında kullanılmayan argüman: '-static-libstdC++'" uyarısı verir. Uyarı: derleme sırasında kullanılmayan argüman: CentOS 7 – vitaut

+1

clang ++ sürüm 4.2.1 'clang diyor '-static-libstdC++'' ve statik bağlama oluşmaz - düzeltmek için herhangi bir yolu var mı? – scrutari

+1

Bu, bir bağlantı zamanı bayrağıdır, derleme zamanı bayrağı değildir. Soruna bakarsanız, '-static-libgcc' bayrağı, LDFLAGS değişkenine eklenir; –

İlgili konular