gcc c e assembly: riferimento non definito a funzione

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
DavidGale
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 21 novembre 2012, 18:03
Desktop: Ubuntu (Unity)
Distribuzione: Ubuntu 12.10

gcc c e assembly: riferimento non definito a funzione

Messaggio da DavidGale »

Ho un problema a compilare un semplice programma in c che dovrebbe chiamare una funzione scritta in assembly 32bit.

Quando do il comando "nasm -f elf32 -g --prefix _ str.asm -o str.o" questa parte viene compilata correttamente,
ma quando provo a dare "gcc -g -m32 str.c str.o -o str" la risposta è:
/tmp/ccfuiXrQ.o: nella funzione "main":
/home/nic/Documenti/1415/ACE/1906/str.c:13: riferimento non definito a "astrcpy"
collect2: error: ld returned 1 exit status

Non riesco a saltarci fuori, qualcuno sa darmi una mano?

La parte di c è la seguente:

Codice: Seleziona tutto

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char *astrcpy(char *, char *);

int main(int argc, char **argv){

  char d[100]="",s[]="Programmare in Assembly e' bello!";
  char *p;
  int x;

  p=astrcpy(d,s);

  printf("la funzione ha restituito %p (%p): %s\n",p,d,d);

  return 0;
}
mentre l'assembly è:

Codice: Seleziona tutto

CPU X64

global astrcpy          ; esporto il simbolo

section .text

astrcpy:
          push ebp          ; salvo ebp
          mov ebp,esp       ; lo faccio puntare alla base dello stack
          mov edi,[ebp+8]   ; carico il primo argomento (indirizzo della stringa destinazion)
          mov esi,[ebp+12]  ; indirizzo secondo argomento

          cld               ; direction flag pari a 0
    
          mov ecx,edi       ; memorizzo valore da restituire

astrcpyc: lodsb
          stosb
          cmp al,0
          jne astrcpyc
          
          mov eax, ecx     ; restituisco indirizzo stringa destinazione

          pop ebp
          ret 
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: gcc c e assembly: riferimento non definito a funzione

Messaggio da crap0101 »

se imposti --prefix a '_', nel file .c "astrcpy" dovrai dichiararla e chiamarla come "_astrcpy"
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti