15

残念ながら、Git を ARMv6 アーキテクチャ用にクロスコンパイルするのに苦労しています。

しかし、実行した手順と入力したコマンドについて説明する前に、ビルド環境について簡単に説明する必要があります。

  • Ubuntu 12.10 64 ビットでクロスコンパイルしています。
  • クロス コンパイラは/home/my_name/cctoolchain(このディレクトリには 、 などが含まれますbin/) にlib/インストールされます。

ここから Git 1.8.2 を取得することから始めました。私が実行したディレクトリを抽出した後:

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

これは数秒間実行された後、次のように中止されました。

システムが fopen されたディレクトリの読み取りに成功したかどうかを確認しています...
configure: エラー: `/home/my_name/git-1.8.2' で:
configure: エラー: クロス コンパイル中にテスト プログラムを実行できません

806 行から 825 行をクラックconfigure.acして削除し、テストを無効にしました。それを行った後、同様の理由で 806 ~ 839 行も削除する必要がありました。

この時点で、./configureスクリプトは完了できました。私は興奮しmakeて Git をビルドしようとしましたが、しばらくすると次のエラーが発生しました。

fetch-pack.c: 関数 'fetch_pack' 内:
fetch-pack.c:928:16: エラー: 'struct stat' には 'st_mtim' という名前のメンバーがありません
make: *** [fetch-pack.o] エラー 1

なんとなく「やり方が悪い」と感じる。これは、 から手動でテストを削除するよりもはるかに簡単なように思えますconfigure.ac。私は何が欠けていますか?

4

3 に答える 3

12

失敗しているマクロはST_MTIME_NSECにありgit-compat-util.hます。このマクロは、configure ではなく、build コマンドラインまたは によって提供されるマクロUSE_NSECNO_NSECおよびによって制御されます。USE_ST_TIMESPECconfig.mak.uname

オプションが指定されていない場合、git はナノ秒のタイムスタンプ (または ) をまったく使用しようとしないはずst_mtimですが、バグがすり抜けたようです。

make NO_NSEC=1問題が解決するかどうか試してみてください。

于 2013-03-20T06:10:26.797 に答える