2013-03-20 24 views
12

Ne yazık ki, ARMv6 mimarisi için Cross-derleme Git zorluk çekiyorum.ARM için Git'i çapraz derleme nasıl yapılır?

Ama girdikten ben uyguladığınız adımları ve komutları açıklayan başlamadan önce, kısaca oluşturma ortamını açıklamalıdır:

  • ben çapraz derleme duyuyorum Ubuntu 12.10 64 bit üzerinde.
  • Çapraz derleyici, /home/my_name/cctoolchain'a yüklenmiştir (bu dizin bin/, lib/, vb içerir).

here'dan Git 1.8.2'yi yakalamaya başladım. dizini ayıkladıktan sonra koştum:

export PATH=$PATH:/home/my_name/cctoolchain/bin

Ben de ./configure güncel olduğuna emin olmak için autoconf koştu.

./configure --prefix=/home/my_name/git-arm --build=x86_64-linux-gnu 
    --host=arm-linux-androideabi

Bu birkaç saniye için koştu ve daha sonra iptal: Açık configure.ac kırık ve testi devre dışı bırakarak, çizgileri 806-825 kaldırıldı

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

şöyle Sonra ./configure çağrılan. Bunu yaptıktan sonra, benzer bir sebeple 806-839 satırlarını da kaldırmak zorunda kaldım.

Bu noktada, ./configure komut dosyası tamamlamayı başardı. Sonra heyecanla Git inşa etmek make koştu ve daha birkaç dakika sonra, bu hata koştu:

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

nasılsa ben "yanlış yapıyorum" ediyorum duygu olsun. Bu, configure.ac'dan testlerin manuel olarak kaldırılmasından çok daha kolay olması gereken bir şeye benziyor. Neyi kaçırıyorum?

+2

Teşekkürler, sorunuz bana çok yardımcı oldu! Sonunda benim için çalışan komut "CC = armv7l-timesys-linux-gnueabi-gcc CFLAGS =" - sysroot =/home/mmes/projeler/arm-cross-sdk/tags/0.1.8 "LDFLAGS =" - -sysroot =/home/evadeflow/projeler/arm-cross-sdk/etiketler/0.1.8 "./configure --prefix =/home/evadeflow/git-arm --build = i386-linux-gnu --host = armv7l-TimeSys-linux-gnueabi'. (''sysroot =' arg çoğu insan için gerekli olmamalıdır. '' (Ac_cv_fread_reads_directories' ve ac_cv_snprintf_returns_bogus') tanımladığınız gibi configure.ac'de bazı testler yapmak zorunda kaldım ve daha sonra yapılandırın. – evadeflow

cevap

10

Hatalı olan makro git-compat-util.h numaralı telefondan ST_MTIME_NSEC. Bu makro, USE_NSEC, NO_NSEC ve USE_ST_TIMESPEC makroları tarafından, derleme komut satırında veya config.mak.uname tarafından yapılandırılarak yapılandırılmadan denetlenir.

O gerektiğini Hiçbir seçenek sağlanırsa, git nanosaniye zaman damgalarını (veya st_mtim) hiç kullanmak denemez, ama bir hata arasından sıyrılıp gibi göründüğünü ol.

make NO_NSEC=1'u deneyin ve sorununuzu çözüp çözmediğine bakın.

+0

** Çalıştı! ** 'make' için ekstra parametre sağlandıktan sonra, zahmetli bir dosya derlenmiş ve uygulamanın geri kalanı (şimdiye kadar, şimdiye kadar) inşa edilmiş gibi görünüyor. –

+0

@NathanOsman Bir yerde bir yere ARM git bazı ikili sağlayabilir miyim, böylece inşa etmek zorunda kalmadan indirebilir miyim?Çok takdir olurdu! –

İlgili konular