【发布时间】:2013-03-09 02:41:05
【问题描述】:
不幸的是,我在为 ARMv6 架构交叉编译 Git 时遇到了困难。
但在我开始描述我所采取的步骤和我输入的命令之前,我应该简要描述一下构建环境:
- 我在 Ubuntu 12.10 64 位上进行交叉编译。
- 交叉编译器安装到
/home/my_name/cctoolchain(该目录包含bin/、lib/等)。
我首先从here 获取 Git 1.8.2。提取目录后我运行:
导出 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'ed目录... 配置:错误:在`/home/my_name/git-1.8.2'中: 配置:错误:交叉编译时无法运行测试程序
我打开 configure.ac 并删除了 806-825 行,禁用了测试。之后,出于类似的原因,我还不得不删除第 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 中删除测试要容易得多。我错过了什么?
【问题讨论】:
-
谢谢,您的问题对我帮助很大!最终对我有用的命令是
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 对于大多数人来说应该不是必需的。)我还必须按照您的描述(ac_cv_fread_reads_directories和ac_cv_snprintf_returns_bogus)注释掉configure.ac中的一些测试,然后运行make configure。跨度>
标签: git cross-compiling autoconf