por
pobrecito hablador
el Martes, 20 Octubre de 2009, 06:58h
(#1180391)
El código en ese caso acaba junto con el resto del código, típicamente en la sección de código ejecutable.
Madre mía... Léelo todo en lugar de la parte que mejor te viene. Te estoy hablando de la parte en la que compilas. Transformas un.c en un.o y dentro de ese.o (lo que se llama compilar). Luego, según el tipo de enlazado que elijas (estático o dinámico), juntará el código en una única sección de código resolviendo esas tablas de símbolos que tanto te gustan a ti, o dejará las tablas no resueltas y lo separará en dos secciones de código: la del ejecutable y la de la biblioteca. Y luego, en la fase del enlazado dinámico, completará la tarea que tú no completaste tras compilar. Sin más.
¿Sabes? A veces la mejor forma de salir de un hoyo no es seguir cavando:-)
Eso mismo te digo yo. Mi campo profesional son los compiladores. Me dedico a ello, sé muy bien cómo funcionan y por eso he saltado, porque no podía aguantar ver cómo se soltaban barbaridades, medias verdades y cómo se retorcía el proceso de compilación separando cosas que no están separando, u otorgando un papel especial a una parte del proceso según el momento en el que se haga.
Pero nada, tú sigue con lo tuyo. Te lo digo: no sabes cómo funciona un compilador. Es un hecho.
Re:Genial
(Puntos:0)Puedes verlo si la desensamblas, y puedes ver también que no aparece el código de las bibliotecas por ninguna parte. En Linux podría ser:
~$ objdump -d -j .text a.out
Verás que las llamadas a función aparece como call blablabla@plt. ¿En blablabla@plt está el código de la biblioteca? Compruébalo tú mismo:
~$ objdump -d -j .plt a.out
Re:Genial
(Puntos:0)Madre mía... Léelo todo en lugar de la parte que mejor te viene. Te estoy hablando de la parte en la que compilas. Transformas un .c en un .o y dentro de ese .o (lo que se llama compilar). Luego, según el tipo de enlazado que elijas (estático o dinámico), juntará el código en una única sección de código resolviendo esas tablas de símbolos que tanto te gustan a ti, o dejará las tablas no resueltas y lo separará en dos secciones de código: la del ejecutable y la de la biblioteca. Y luego, en la fase del enlazado dinámico, completará la tarea que tú no completaste tras compilar. Sin más.
Eso mismo te digo yo. Mi campo profesional son los compiladores. Me dedico a ello, sé muy bien cómo funcionan y por eso he saltado, porque no podía aguantar ver cómo se soltaban barbaridades, medias verdades y cómo se retorcía el proceso de compilación separando cosas que no están separando, u otorgando un papel especial a una parte del proceso según el momento en el que se haga.
Pero nada, tú sigue con lo tuyo. Te lo digo: no sabes cómo funciona un compilador. Es un hecho.