2010-10-05 8 views
10

¿Cómo sabe el vinculador qué símbolos se deben resolver en el tiempo de ejecución? Particularmente, me interesa qué información llevan los archivos de objetos compartidos que indican al vinculador que resuelva los símbolos en tiempo de ejecución. ¿Cómo funciona la resolución de símbolo dinámico en tiempo de ejecución, es decir, qué ejecutable hará para encontrar el símbolo y en caso de que se definan varios símbolos con el mismo nombre que se encontrarían?¿Cómo sabe el vinculador qué símbolos se deben resolver en el tiempo de ejecución?

¿Qué sucede si el archivo se vinculó solo estáticamente, pero luego se vincula dinámicamente en el tiempo de ejecución como parte de una biblioteca compartida? ¿Qué símbolo usará el ejecutable? En otras palabras, ¿es posible anular símbolos en un ejecutable al vincular esos símbolos en una biblioteca compartida?

La plataforma en cuestión es SUN OS.

+0

Cada tiempo de ejecución es diferente. Tienes que ser más específico sobre la plataforma. –

Respuesta

1

Comprobar este artículo de Linux Journal. Para obtener más información, quizás específicamente relacionada con Windows, AIX, OSx, etc., recomendaría el artículo de Wikipedia en Linker (computing) y las referencias allí incluidas.

2

Pruebe el enlace de abajo. Espero que responda a su pregunta

http://www.linuxjournal.com/article/6463

+0

: O) Pegúenme a eso. Hice referencia al mismo artículo en mi respuesta. Vota por la velocidad. –

+0

De hecho, uso este artículo como un ejemplo para las personas que comienzan con la programación en C++ y es bastante efectivo. – Vaibhav

+0

¿Qué sucede si el archivo estuvo vinculado ** solo ** estáticamente, pero luego se vinculó dinámicamente en el tiempo de ejecución como parte de una biblioteca compartida? ¿Qué símbolo usará el ejecutable? En otras palabras, ¿es posible anular símbolos en un ejecutable al vincular esos símbolos en una biblioteca compartida? – Leonid

0

Si un archivo está vinculado estáticamente no hay una resolución de tiempo de ejecución para hablar. Si un objeto compartido se vincula a esa misma biblioteca de forma dinámica o estática, la versión vinculada a la biblioteca solo afectará al código ejecutado en la biblioteca. Esto puede causar problemas si enlaza a dos versiones diferentes de la misma biblioteca que son incompatibles y desplaza los datos hacia adelante y hacia atrás.

Cuestiones relacionadas