2011-01-07 19 views
5

Voglio compilare la libreria statica in Linux per Windows. Di seguito è riportata la procedura che ho seguito per la compilazioneLibreria statica di compilazione incrociata da Linux per Windows

  1. compilare il codice sorgente di libreria statica in Linux usando i586-mingw32msvc-cc -c static_lib.c -o static_lib.o
  2. Creato la libreria statica in linux ar rv static_lib.a static_lib.o e ranlib static_lib.a
  3. ho creato un programma di esempio in Eclipse su Windows e collegato questa libreria statica che è cross compilata in linux per windows. Il compilatore utilizzato a Windows era mingw.

durante la compilazione del programma in Windows Eclipse, il compilatore mi dà il seguente errore.

static_test\static_lib.a: file format not recognized; treating as linker script 
\static_test\static_lib.a:1: syntax error 
collect2: ld returned 1 exit status 
Build error occurred, build is stopped 

I codici sono i seguenti:

static_lib.c

#include <stdio.h> 

void func(void) 
{ 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
     printf("Hello\n"); 
} 

sample_static.c

#include <stdio.h> 

extern void func(void); 

int main() 
{ 
    printf ("Main function\n"); 
    func(); 
} 

gentilmente mi danno suggerimenti per compilare e farlo funzionare.

saluti Johnnie Alan

risposta

1

Provare a utilizzare l'archiviazione cross-compilatore invece di quello nativo, vale a dire utilizzare i586-mingw32msvc-ar e i586-mingw32msvc-ranlib invece di ar e ranlib.

Oppure è solo un errore di battitura nella domanda?

+1

Anche dopo aver usato l'archiver per il cross-compilatore, il linker mingw su windows genera lo stesso errore. – Johnnie

1

Provare i586-mingw32msvc-ar invece di semplice ar. In genere, ar in Linux non supporterà il formato PE utilizzato per la programmazione Windows. (O dovrai istruirlo per usare il formato PE.)

Problemi correlati