2012-06-30 1 views
0

Lorsque j'ai exécuté la bibliothèque partagée, elle a été exécutée. Comment cela s'est-il passé sans programme principal()? Quel est le point d'entrée pour démarrer l'exécution?Exécution d'un libarary partagé sans main()

[email protected]:~$ /lib/i386-linux-gnu/libc.so.6 

GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al. 
Copyright (C) 2012 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.6.3. 
Compiled on a Linux 3.2.14 system on 2012-04-19. 
Available extensions: 
    crypt add-on version 2.1 by Michael Glad and others 
    GNU Libidn by Simon Josefsson 
    Native POSIX Threads Library by Ulrich Drepper et al 
    BIND-8.2.3-T5B 
libc ABIs: UNIQUE IFUNC 
For bug reporting instructions, please see: 
<http://www.debian.org/Bugs/>. 
[email protected]:~$ 
+0

duplication possible de [Exécution d'une bibliothèque partagée sous Unix] (http://stackoverflow.com/questions/4963029/executing-a-shared-library-on-unix), voir aussi http://stackoverflow.com/ questions/6899361/bibliothèques-exécutables-partagées – Mat

Répondre

3

En supposant que vous utilisez l'éditeur de liens GNU, vous pouvez spécifier le point d'entrée avec l'option -e entry (ou --entry=entry en notation d'option longue).

Si vous appelez l'éditeur de liens indirectement via gcc, utilisez -Wl,-e,entry.

3

bibliothèques partagées ont la capacité de ont une fonction main(); c'est juste que la plupart des n'ont pas de.

+0

@ Ignaciao, ok. Mais comment l'exécution ci-dessus et la sortie sont-elles affichées? –

+2

Le chargeur a chargé la bibliothèque et son point d'entrée a été appelé. –

Questions connexes