2011-02-10 24 views
16

Bazı Unix paylaşılan kitaplıkları, komut satırından çalıştırılabilirmiş gibi çağrıldığında bir çıktı sağlar. Örneğin:Unix'te paylaşılan kitaplık yürütme

$ /lib/libc.so.6 
GNU C Library stable release version 2.13, by Roland McGrath et al. 
Copyright (C) 2011 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. 
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 
Compiled by GNU CC version 4.5.2. 
Compiled on a Linux 2.6.37 system on 2011-01-18. 
[...] 

Kendi yazım C'nin paylaşılan bir kitaplığında bu çıktıyı nasıl sağlayabilirim? Şimdi yeni oluşturduğum bir kütüphaneyi çalıştırdım ve bir segment hatası alıyorum.

Not: Ben unix.stackechange.com https://unix.stackexchange.com/questions/7066/executing-a-shared-library

+3

da http://stackoverflow.com/questions/1449987/building-a-so-that-is-also-an-executable –

+0

@BrianL bakın. Teşekkürler, çok ilginç! – franziskus

cevap

10

ana aşağıda tanımı Gördüğünüz çıkış baskı sorumludur üzerinde daha önce bu sorular. Glibc'nin kaynak ağacının csu/version.c dosyasında tanımlanmıştır. Umarım bu yardımcı olur.

 
#ifdef HAVE_ELF 
/* This function is the entry point for the shared object. 
    Running the library as a program will get here. */ 

extern void __libc_main (void) __attribute__ ((noreturn)); 
void 
__libc_main (void) 
{ 
    __libc_print_version(); 
    _exit (0); 
} 
#endif 
İlgili konular