git - 如何交叉编译Git for ARM?

标签 git cross-compiling autoconf

不幸的是,我在为 ARMv6 架构交叉编译 Git 时遇到困难。

但在我开始描述我所采取的步骤和我输入的命令之前,我应该简要描述一下构建环境:

  • 我在 Ubuntu 12.10 64 位上进行交叉编译。
  • 交叉编译器安装到/home/my_name/cctoolchain(该目录包含bin/lib/等)。

我首先从 here 获取 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

这运行了几秒钟然后中止:

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 中手动删除测试要容易得多。我错过了什么?

最佳答案

失败的宏是 git-compat-util.h 中的 ST_MTIME_NSEC。此宏由宏 USE_NSECNO_NSECUSE_ST_TIMESPEC 控制,它们在构建命令行或 config.mak 中提供。 uname,不是通过配置。

应该是,如果没有提供任何选项,git 根本不会尝试使用纳秒时间戳(或 st_mtim),但它看起来像是漏掉了一个错误通过。

尝试设置 NO_NSEC=1 看看是否能解决您的问题。

关于git - 如何交叉编译Git for ARM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15516168/

相关文章:

css - GIT 和 merge 与 CSS 冲突。为什么这会引起冲突?

交叉编译Raspberry pi 2错误

android - 编译到Android : invalid signature of pthread_key_create

c++ - 使用 Autotools 插件从 Eclipse 调用 autoreconf 时出错

c++ - 使用 autotools 为共享库正确安装 config.h

git 恢复删除后没有提交的文件

git - 解决与 egit 的冲突。没有 "Team -> Add"选项

git - 在 git repo 中查找超过 x 兆字节的文件,这些文件在 HEAD 中不存在

gcc - 如何更改 OpenMPI 的编译器

unit-testing - automake:自动运行单元测试