Question

Ceci est une question que je suis venu à plusieurs reprises à travers, concernant généralement les plug-ins, mais récemment je suis tombé sur elle en essayant de marteler certains problèmes du système de construction. Ce qui me préoccupe est principalement pour les systèmes basés sur * nix, mais je suppose qu'il applique aux fenêtres ainsi.

La question est, quel est le montant minimum d'informations nécessaires pour faire un lien dynamique? Je sais que les distributions Linux comme Debian ont simplement un « i686 », ce qui est suffisant. Cependant, je suppose qu'il ya des informations implicites ici, et je ne serai probablement pas capable de faire un lien dynamique d'un objet partagé tant qu'ils sont compilés à l'aide -march=i686, je vais?

Alors, que doit être mis en correspondance pour moi d'être en mesure de charger avec succès un objet partagé? Je sais que pour c ++ même le compilateur (et parfois la version) doit correspondre à cause de nom mutiler, mais j'étais un peu en espérant que cela n'a pas été le cas pour c.

Les pensées ont apprécié.

Modifier :
La réponse de Neil m'a fait comprendre que je ne parle pas vraiment de liens dynamiques, ou plutôt, la question est double,

  1. ce qui est nécessaire pour la liaison statique et
  2. ce qui est nécessaire à la liaison dynamique

Je espère plus pour le premier que je suppose.

Était-ce utile?

La solution

Bien au minimum, le code doit avoir été compilé pour la même famille de processeur, et vous avez besoin de connaître le nom de la bibliothèque et la fonction. En plus de cela, vous avez besoin du même ABI. Vous devez être conscient que, malgré ce que les gens pensent, la norme C ne précise pas ABI et il est tout à fait possible pour deux compilateurs C (ou versions du même compilateur) d'adhérer à la norme, exécutez sur la même plate-forme, mais ont des ABIs.

Comme pour spécifier exactement les détails de l'architecture - je dois admettre que je ne l'ai jamais fait. Envisagez-vous de distribuer des bibliothèques binaires sur différentes variantes de Linux?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top