Question

J'utilise MSNA Assembleur sous linux quand j'utilise la commande "nasm -f elf -l hello.lst hello.asm" ça fonctionne bien mais lors de la liaison avec gcc « gcc -o bonjour hello.o » il génère une erreur:

.

hello.asm :( texte + 0x4): relocalisation tronquée pour s'adapter: R_386_16 contre `.data » collect2: ld a renvoyé 1 état de sortie

J'ai appris que c'est un problème avec gcc et 16 bits

des solutions?

Était-ce utile?

La solution

Linux ne même pas un sous-système 16 bits - même si vous avez gcc pour le lier, vous pouvez toujours pas l'exécuter! Pourquoi ne pas utiliser simplement .bits 32?

Autres conseils

Je fait face à la même situation il y a et encore quelques années cette année.

Deux façons d'y faire face sont:

  1. Écrivez votre propre éditeur de liens convivial 16 bits (vous devez analyser la section .rel.text au moins).
  2. Utilisez un symbole de base (ou symboles) pour calculer les adresses absolues manuellement (les sections de .rel sont encore créés, mais ils peuvent être enlevés). Cependant, cette méthode est l'erreur très sujette.

Je finis toujours par faire deux, mais je devrais probablement prendre le temps d'écrire un éditeur de liens (ou patcher GNU ld ...).

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