Comment faire pour installer 32 bits glibc sur 64 bits ubuntu
Je suis en train d'apprendre le C conventions d'Appel en langage d'assemblage. Pour ce faire, j'ai fait un programme simple à l'aide de la puts
fonction de la bibliothèque C standard.
Je assemblés et reliés au programme avec les commandes suivantes :-
nasm -f elf file.asm
gcc -m32 file.asm -o file
Msna produit la droite de l'objet fichier, mais lors de l'exécution de la gcc pour lier l'objet des fichiers, j'obtiens l'erreur.
En regardant l'erreur que j'ai compris que je n'ai pas la version 32 bits de la glibc sur mon système. Comment puis-je l'installer. J'ai déjà installé cette paquet installé.
J'ai 64 bits ubuntu 12.04 que mon OS.
EDIT :- j'ai installé les paquets suivants, mais le problème est toujours pas résolu :-
1)ia32-libs
2) libc6-i386
OriginalL'auteur Pratik Singhal | 2014-05-31
Vous devez vous connecter pour publier un commentaire.
Cette commande va installer le 32bit bibliothèques de la glibc sur 64 bits Ubuntu:
C'est la bonne syntaxe pour la compilation de l'assemblée de code objet dans un fichier exécutable à l'aide de gcc:
Non, la deuxième commande est très instructif.
Alors il doit y avoir une explication quant à pourquoi. Poster du code seulement pas enseigner quoi que ce soit
Merci pour les commentaires. J'ai élaboré un peu sur ma réponse. Je voulais simplement partager la commande que j'ai utilisé pour obtenir le 32bit bibliothèques de la glibc.
Cela m'a permis de cross-compilation pour les BRAS sur un x64 avec debien, avec arm-none-eabi-gcc de 2015q2.
OriginalL'auteur brennanhm
Ce qui est faux. Votre première
nasm
commande est probablement la création d'unfile.o
fichier (et vous devriez vérifier que, par exemple, avecls -l file.o
). La deuxièmegcc
commande de ne pas faire ce que vous voulez.Mais
gcc
ne sais pas à propos de*.asm
des extensions de fichier (il sait à propos de.S
pour preprocessable assembleur GNU syntaxe, et.s
de code assembleur, mais probablement gérer des extensions inconnues comme.asm
comme objet ELF fichiers par défaut, cependantfile.asm
est pas un ELFE de fichier de l'objet). Vous devriez essayer de liaison avecAvis que vous donnez à GCC un objet fichier dans ELF (pour le linker invoquée par
gcc
) que vous avez déjà produit avecnasm
.(vous pouvez par la suite supprimer le
-v
option pourgcc
)Vous pouvez également utiliser la GNU
as
la syntaxe de l'assembleur (pas le msna), le nom de votre fichierfile.S
(si vous souhaitez être prétraitées) oufile.s
(sans prétraitement) et l'utilisationgcc -v -Wall -m32 file.s -o myprog
de le compiler.BTW, pour comprendre plus au sujet de les conventions d'appel, lire la x86-64 ABI spec (et celui, similaire, pour 32 bits x86 ...), faire un petit C exemple de fichier
some-example.c
, puis exécutezgcc -S -fverbose-asm -O some-example.c
et regardez-la dans les produitssome-example.s
avec un éditeur ou un pager.Également à apprendre plus au sujet de ELF ensuite utiliser readelf (&
objdump
) de manière appropriée.OriginalL'auteur Basile Starynkevitch
Vous voulez installer un paquet appelé "ia32-libs'
Je reçois toujours le même message d'erreur !
Pouvez-vous coller l'erreur dans votre question?
OriginalL'auteur Vlad