2012-06-16 9 views
12

Bir kütüphanenin libC++ veya libstdC++ ile mac üzerinde oluşturulduğunu nasıl anlarım?, libC++ veya libstdC++ üzerinde Mac ile oluşturulmuş bir kütüphane idi

Ben -L otool kullanıyorum, ancak bu (mac hiçbir ldd vardır) i kütüphane X varsa

, ben hareket olarak yeniden zorunda olmadığını bilmek istiyorum göstermek için görünmüyor GCC clang için. Ben GCC ile kütüphanelerin bir dizi yerleşik, mac kütüphaneleri genelde çınlama afaik ile inşa edilir. o kütüphaneye karşı inşa olsaydı otool -Llibstdc++ gösterecek dinamik kütüphaneleri için

cevap

3

, (yani o C++ olsaydı).

statik kütüphaneler için, soru mantıklı değil. Statik kütüphaneler diğer kütüphanelere karşı kurulmamıştır.

Ve sen derleyiciler değiştirirken sırf şey yeniden olmamalıdır. Orada sadece bir, sistem çapında C++ kütüphanesi ve o kararlı bir ABI vardır.

+0

Hmm - ABI üzerinde yorumunuz doğru ilişkin libc'yi görünmüyor ++ v libstdC++ - http://stackoverflow.com/a/8457799/1460739 – user1460739

+0

sorunu daha az derleyici değişimi, daha standart kütüphane değişikliğidir. – user1460739

+1

Diğer soru, belirli bir C++ kütüphanesi kullanılarak bir programın özel olarak derlenmesi ancak aynı C++ kütüphanesine karşı derlenmemiş bir kütüphaneye bağlanması ile ilgili olan bir soruydu. Derleyicinin onu geçersiz kılmadan yapmasına izin verirseniz, her şey için sistem stdC++ kütüphanesini alırsınız ve çalışır. Bunu geçersiz kılarsanız, her şey için aynı şekilde geçersiz kılmanız gerekir. –

8

Statik kütüphane: nm -a helloworld.a | grep __1

çizgiler, örneğin, __1 içeren bkz halinde __121__basic_string ardından kütüphane libC++ ile derlenmiştir. Ancak C++ Standart Kütüphane tipleri kullanılan fonksiyon imzalarının hiçbiri, o zaman bu çalışmayabilir eğer.

Dinamik kütüphane: libC++ veya libstdC++ dylib bağımlılık için otool -L helloworld

bak.