Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - [asm AMD64] Errore di esecuzione: chiamata a libreria condivisa
Forum - Altri Linguaggi - [asm AMD64] Errore di esecuzione: chiamata a libreria condivisa

Avatar
amreo (Normal User)
Pro


Messaggi: 93
Iscritto: 18/03/2013

Segnala al moderatore
Postato alle 15:52
Venerdì, 10/04/2015
Ciao a tutti
Ho un problema quando cerco di eseguire un programma. Non riesco a chiamare printf:

Utilizzo un computer portatile asus con AMD64
Sistema operativo Linux(Ubuntu)
Assembler AS
Linker ld

Output di Uname -a Linux amreo-ubuntu-pc 3.13.0-49-generic #81-Ubuntu SMP Tue Mar 24 19:29:48 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Codice assembly
Codice sorgente - presumibilmente Plain Text

  1. .data
  2.  msg: .ascii "Hello world\n\0"
  3.  
  4. .text
  5. .globl _start
  6.  
  7. _start:
  8. pushq $msg
  9. callq printf



La Compilazione e il linkaggio avviene con successo
Codice sorgente - presumibilmente Altri Linguaggi

  1. amreo@amreo-ubuntu-pc:~/src/src-asm$ as es1.s -o es1.o
  2. amreo@amreo-ubuntu-pc:~/src/src-asm$ ld -dynamic-linker /lib/ld-linux.so.2 -o es1 es1.o -lc



però quando cerco di eseguire il programma:
Codice sorgente - presumibilmente Plain Text

  1. amreo@amreo-ubuntu-pc:~/src/src-asm$ ./es1
  2. -bash: ./es1: Accesso a una libreria condivisa danneggiata


mi da errore.


NB: se mi state chiedendo perchè sto imparando assembly, non lo so ma è solo curiosità nerdistica





PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6223
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:13
Venerdì, 10/04/2015
Perchè linki ld-linux.so.2 ?

Non dovresti linkare libc.so.6 (dove è definita prinf)?

Edit: vedi anche http://stackoverflow.com/questions/13178501/compiling-32-b ...

Ultima modifica effettuata da pierotofy il 10/04/2015 alle 23:16


Il mio blog: https://piero.dev
PM Quote