Sfortunatamente, sto riscontrando delle difficoltà nella compilazione incrociata di Git per l'architettura ARMv6.Come eseguire la cross-compilazione di Git per ARM?
Ma prima di iniziare descrivendo i passi che ho preso e comandi ho inserito, dovrei descrivere brevemente l'ambiente di compilazione:
- Io sono cross-compilazione su Ubuntu 12.10 a 64 bit.
- Il cross-compilatore è installato su
/home/my_name/cctoolchain
(questa directory contienebin/
,lib/
, ecc.).
Ho iniziato afferrando Git 1.8.2 da here. Dopo aver estratto la directory mi sono imbattuto:
export PATH=$PATH:/home/my_name/cctoolchain/bin
Ho anche eseguito autoconf
per assicurarsi che ./configure
era fino ad oggi. Poi ho invocato ./configure
come segue:
./configure --prefix=/home/my_name/git-arm --build=x86_64-linux-gnu --host=arm-linux-androideabi
Questo ha funzionato per un paio di secondi e poi interrotta con:
checking whether system succeeds to read fopen'ed directory... configure: error: in `/home/my_name/git-1.8.2': configure: error: cannot run test program while cross compiling
aprivo configure.ac
e le linee rimosso 806-825, disabilitando il test. Dopo averlo fatto, ho anche dovuto rimuovere le righe 806-839 per un motivo simile.
A questo punto, è stato possibile completare lo script ./configure
. Ho poi eccitato corse make
per costruire Git e dopo qualche istante, sono imbattuto in questo errore:
fetch-pack.c: In function 'fetch_pack': fetch-pack.c:928:16: error: 'struct stat' has no member named 'st_mtim' make: *** [fetch-pack.o] Error 1
In qualche modo ho la sensazione che sto "facendo male". Sembra qualcosa che dovrebbe essere molto più facile della rimozione manuale dei test da configure.ac
. Cosa mi manca?
Grazie, la tua domanda mi ha aiutato molto! Il comando che alla fine ha funzionato per me era 'CC = armv7l-timesys-linux-gnueabi-gcc CFLAGS =" - sysroot =/home/mmes/projects/arm-cross-sdk/tags/0.1.8 "LDFLAGS =" - -sysroot =/home/evadeflow/projects/arm-cross-sdk/tags/0.1.8 "./configure --prefix =/home/evadeflow/git-arm --build = i386-linux-gnu --host = armv7l-Timesys-linux-gnueabi'. (Il '--sysroot =' arg non dovrebbe essere necessario per la maggior parte delle persone.) Ho anche dovuto commentare alcuni test in 'configure.ac' come descritto (' ac_cv_fread_reads_directories' e 'ac_cv_snprintf_returns_bogus'), ed eseguire' make configurare' dopo. – evadeflow