Thật không may, tôi gặp khó khăn khi biên dịch chéo Git cho kiến trúc ARMv6.Làm thế nào để biên dịch chéo Git cho ARM?
Nhưng trước khi tôi bắt đầu mô tả các bước tôi đã thực hiện và lệnh tôi đã nhập, tôi nên mô tả ngắn gọn về xây dựng môi trường:
- Tôi cross-biên soạn trên Ubuntu 12.10 64-bit.
- Trình biên dịch chéo được cài đặt vào
/home/my_name/cctoolchain
(thư mục này chứabin/
,lib/
, v.v.).
Tôi bắt đầu bằng cách lấy Git 1.8.2 từ here. Sau khi giải nén vào thư mục Tôi chạy:
export PATH=$PATH:/home/my_name/cctoolchain/bin
Tôi cũng chạy autoconf
để đảm bảo rằng ./configure
đã được cập nhật. Sau đó, tôi gọi ./configure
như sau:
./configure --prefix=/home/my_name/git-arm --build=x86_64-linux-gnu --host=arm-linux-androideabi
này chạy cho một vài giây và sau đó bị hủy bỏ với:
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
tôi nứt mở configure.ac
và loại bỏ dòng 806-825, vô hiệu hóa các thử nghiệm. Sau khi làm điều đó, tôi cũng phải loại bỏ các dòng 806-839 vì một lý do tương tự.
Tại thời điểm này, tập lệnh ./configure
có thể hoàn tất. sau đó tôi hào hứng chạy make
để xây dựng Git và sau hơn một vài phút, chạy vào lỗi này:
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
Bằng cách nào đó tôi có cảm giác tôi đang "làm việc đó sai". Điều này nghe có vẻ dễ dàng hơn nhiều so với việc xóa các thử nghiệm theo cách thủ công từ configure.ac
. Tôi đang thiếu gì?
Cảm ơn, câu hỏi của bạn đã giúp tôi rất nhiều! Lệnh cuối cùng làm việc cho tôi là 'CC = armv7l-timesys-linux-gnueabi-gcc CFLAGS =" - sysroot =/home/mmes/dự án/arm-cross-sdk/thẻ/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'. (Các '--sysroot =' arg không cần thiết cho hầu hết mọi người.) Tôi cũng đã nhận xét một số thử nghiệm trong 'configure.ac' như bạn đã mô tả (' ac_cv_fread_reads_directories' và 'ac_cv_snprintf_returns_bogus'), và chạy' make cấu hình' sau đó. – evadeflow