2010-06-30 19 views

cevap

4

Sen ikili ihraç sembolleri listelemek için nm komut satırı aracını kullanabilirsiniz: the manual göre

~/src> cat nm-test.c 

static int plus_four(int x) 
{ 
     return x + 4; 
} 

int sum_plus_four(int a, int b) 
{ 
     return plus_four(a + b); 
} 

int product_plus_four(int a, int b) 
{ 
     return plus_four(a * b); 
} 
~/src> gcc -c nm-test.c 
~/src> nm ./nm-test.o 
00000000 t plus_four 
00000023 T product_plus_four 
0000000b T sum_plus_four 

, 't' sembolü kodu (metin) segmentinde olduğu anlamına gelir ve büyük araçlar halka açık.

Aradığınız bir simgeniz varsa, nm numaralarını kullanarak bir kütüphane tarafından erişilebilir sembolleri erişilebilir hale getirebilirsiniz. grep:

$ find -name lib*.a /example/library/path | xargs nm | grep -E "T $SYMBOL_TO_FIND" 

Bu komut satırı, test edilmemiş bir çizimdir, ancak bu kavramı göstermelidir. C standardı API'sinin bir parçasıysa, o zaman sadece man'u çalıştırın, işlevin nerede tanımlandığını açıkça belirtmelidir.

+0

Bu, işlev adı verilen kitaplık yerine, kitaplık verilen işlev adlarını bulamaz mı? –

+0

@Pete: Doğru, ancak bilgileri dışa aktardığından, kitaplık dosyalarını kopyalamak için kullanılabilir. – unwind

+0

Teşekkürler .. Anladım .. – Dinesh

1

+0

Ve eğer değilse, kütüphane belgeleri muhtemelen nasıl bağlanacağını belirtir. – nos

1

Kitaplığı program dışı bir şekilde bulmak isterseniz, LSB Navigator'u yararlı bulabilirsiniz. Fonksiyonu arama kutusuna girin ve yeşil "durum" ile satırdaki kütüphaneyi kontrol edin. (Eğer -lrt ile bağlar, böylece, yukarıda tarif edilen örnekte, librtmq_unlink için doğru bir kütüphane)

http://coldattic.info/pic/165509391387.png

Bu fonksiyonu içeren "klasik" kütüphane olacaktır. Sadece bu kütüphaneyle bağlantı kurun ve neredeyse tüm Linux sistemlerinde çalışacaktır.

Not: Önerdiğim aracın geliştiricilerinden biriydim.