2009-10-12 13 views
6

LD_PRELOAD=/usr/local/lib/libtcmalloc.so'u kullandığımda, tüm malloc çağrıları tcmalloc çağrıları olur. Ancak, ben libtcmalloc karşı statik olarak bağlandığınızda, ben hala LD_PRELOAD ayarı kullanmıyorsanız düz malloc çağrılıyor buluyorum.tcmalloc: Statik olarak derlerken malloc çağrılarımı geçersiz kılmama nasıl yardımcı olabilirim?

Tcmalloc'a karşı, mallocs'm tcmalloc'a bağlanacak şekilde nasıl statik olarak derleyebilirim?

Notlar:

  • ben ederim ben kendim malloc_hook kullanmak zorunda Muhtemelen
  • çalışmaz tcmalloc kadar, sadece #defining malloc vs C++ yeni bir sürü kullanarak, fakat ediyorum dinamik

cevap

11

bağlarken bunu açıkça yapıyor beri, ben tcmalloc benim için yapmak alabilir düşündün mü Semboller ilk maç bazında çözümlenir. Libtcmalloc.a'nın, libc.a önce linker tarafından arandığından emin olmalısınız. Normalde yapmanız gerekmediğinden libc.a'yı açıkça bağlamadığınızı varsayalım. Çözüm, -nostdlibs belirtmek ve sonra tüm gerekli kitaplıkları onları aranmasını istediğiniz sırayla açıkça bağlamaktır. Genellikle böyle bir şey: basit olabilecek

-nostdlibs -llibtcmalloc -llibm -llibc -llibgcc 

Başka bir çözüm, nesne dosyaları semboller çözümünde kütüphaneler önceliklidir beri, statik kütüphane yerine tcmalloc çözülmesi için gerekli nesne dosyası (ler) bağlamaktır.

İlgili konular