К сожалению, у меня возникли трудности с кросс-компиляцией Git для архитектуры ARMv6.Как скомпилировать Git для ARM?
Но прежде чем я начну с описанием шагов, которые я взял и команды я ввели, я должен кратко описать среду сборки:
- Я являюсь кросс-компиляции на Ubuntu 12.10 64-битным.
- Перекрестный компилятор установлен на
/home/my_name/cctoolchain
(этот каталог содержитbin/
,lib/
и т. Д.).
Я начал с захвата Git 1.8.2 от here. После извлечения каталога я побежал:
export PATH=$PATH:/home/my_name/cctoolchain/bin
Я побежал autoconf
, чтобы убедиться, что ./configure
было до настоящего времени. Тогда я вызван ./configure
следующим образом:
./configure --prefix=/home/my_name/git-arm --build=x86_64-linux-gnu --host=arm-linux-androideabi
Это побежал в течение нескольких секунд, а затем прервана:
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
Я приоткрыл configure.ac
и удалить строки 806-825, отключение теста. После этого мне также пришлось удалять строки 806-839 по той же причине.
На этом этапе скрипт ./configure
был в состоянии завершить. Затем я взволнованно побежал make
построить Git и после того, как еще несколько моментов, столкнулся с этой ошибкой:
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
Как-то я чувствую, что я «делают это неправильно». Это похоже на то, что должно быть намного проще, чем вручную удалить тесты с configure.ac
. Что мне не хватает?
Спасибо, ваш вопрос мне очень помог! Команда, которая, наконец, работала для меня, была «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'. («-sysroot =' arg не должен быть необходим большинству людей.) Мне также пришлось прокомментировать некоторые тесты в 'configure.ac', как вы описали (' ac_cv_fread_reads_directories' и 'ac_cv_snprintf_returns_bogus'), и запустить' make configure' впоследствии. – evadeflow