Cantidad mínima de información necesaria para hacer (dinámica) de la vinculación?

StackOverflow https://stackoverflow.com/questions/2221438

  •  19-09-2019
  •  | 
  •  

Pregunta

Esta es una pregunta que me he topado varias veces, generalmente sobre plug-ins, pero hace poco me encontré tratando de afinar algunos generar problemas en el sistema.Mi preocupación es principalmente para los basados en *nix sistemas, pero supongo que se aplica a windows.

La pregunta es, ¿cuál es la mínima cantidad de información necesaria para hacer la vinculación dinámica?Sé que las distribuciones de linux como Debian tener simplemente un "i686", que es suficiente.Sin embargo, supongo que hay algo de información implícita aquí, y yo probablemente no será capaz de hacer la vinculación dinámica de cualquier objeto compartido como el tiempo que se compila utilizando -march=i686, puedo?

Entonces, ¿qué debe ser emparejado correctamente para mí ser capaz de cargar un objeto compartido con éxito?Yo sé que para c++, incluso el compilador (y a veces de versión) debe coincidir debido al nombre de destrozarlo, pero yo estaba esperando este no era el caso para c.

Cualquier pensamiento apreciado.

Editar:
Neil respuesta me hizo darme cuenta de que yo no estoy hablando acerca de la vinculación dinámica, o más bien, la pregunta es doble,

  1. lo que se necesita para la vinculación estática, y
  2. lo que se necesita para la vinculación dinámica

Tengo más esperanzas para el primero, supongo.

¿Fue útil?

Solución

Bueno, como mínimo, el código debe haber sido compilado por la misma familia de procesadores, y hay que saber el nombre de la biblioteca y la función. Además de eso, necesita la misma ABI. Debe tener en cuenta que a pesar de lo que la gente piensa, la Norma C no especifica un ABI y es perfectamente posible que dos compiladores de C (o versiones del mismo compilador) para adherirse a la norma, se ejecutan en la misma plataforma, pero tienen diferente ITB.

En cuanto a especificar exactamente detalles de la arquitectura - Debo admitir que nunca he hecho. ¿Está pensando en la distribución de las bibliotecas binarias en diferentes variantes de Linux?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top