2009-10-31 20 views
13

ile bağlantı kurmadan kaçının Şu anda Linux ve uClibc'de C kullanan bir gömülü proje üzerinde çalışıyorum. C++ 'ya taşımakla ilgileniyoruz, ancak libstdC++' da bağlantı ile ilişkili olan yükü kaldırmak istemiyorum. Benim izlenimim, iostream veya vektör gibi STL'den hiçbir şey kullanmadığımız sürece bunun mümkün olmasıdır.libstdC++

Nasıl g ++, libstdC++ ile bağlantı kurulmadan derlenecek?

cevap

10

Derlerken, yalnızca derlemek için g++ -c kullanın. Sonra bağlantı için g++ yerine ld kullanın. Bu, tüm kütüphanelerinizi komut satırında (libc ve libcrt dahil) adlandırmanızı gerektiren doğrudan bağlayıcıyı çağırır. Eğer "daha iyi c" olarak g ++ kullanımı iseniz

Alternatif olarak, (otomatik libc içerecektir olan)

+0

Bunu denediğimde, bağlanmaya çalışırken "__gxx_personality_v0" ifadesine "undefined reference" olsun. – Brian

+0

Bence bu, C++ özellikli bir özellik kullandığınız anlamına geliyor. Hangi özellikte olduğu konusunda emin değilim. –

+0

Tamam, this question'a başvurmak için çalıştım. "G ++ -fno-exceptions -c" ile derlenmeli ve ayrı ayrı bağlanmalısınız. – Brian

9

Şunları kullanabilirsiniz nihai bağlantı adımı için gcc kullanmak mümkün olabilir

g++ -nodefaultlibs -fno-exceptions a.cc 

Ama tamlığı ve doğruluğu uğruna bu şekilde özellikleri ++ tüm c ...

2

kullanamazsınız:

g++ -c -fno-exceptions a.cpp 
gcc a.o -o a 
İlgili konular