Android开发-交叉编译问题

    Android着实很火爆,工资待遇也不错,如果纯粹学习使用Java做Android应用难度不大;但是毕竟Java不是万能的,对于资源相对紧张的手机系统来说,应用的性能应该要摆在第一位;对性能要求比较高的游戏应用使用C和Java混合开发是个不错的选择。Google也发布了NDK工具,用于构建本地代码部分,NDK还包含了交叉编译工具链,用来生成本地ARM二进制文件等 ,使用它可以方便不喜欢使用Java作为开发语言的C/C++工程师们进入移动开发领域 。 Google还是大力推进纯Java开发,对本地开发提供的支持极少,但是我们也可以使用Java中的JNI技术来使Java和C能够强强联合。关于JNI的使用网上有很多相关文档。本文仅是记录在开发过程中出现的一点小问题。

    众所周知,Android系统的内核是Linux,我们平常用的电脑基本上是x86平台,而现在智能手机则是ARM平台; 在x86平台下编译的C代码是不能直接在ARM平台上使用的,这就需要交叉编译,就是在一个平台上生成另一个平台上的可执行代码 。

    下载了一个GNU工具链,然后编写了shell脚本,主要用于替换GNU GCC编译器。在此之前需要把Android的源码下载到本机,还得把Android Linux内核下载保存,这两者都可以通过GIT下载,很是方便 ,只不过时间会比较长。将所有准备工作做完后,却发现无法编译C代码,出现以下问题:

# armgcc -c test.c
In file included from /root/androidsrc/bionic/libc/include/stdio.h:55:0,
from native/main.c:1:
/root/androidsrc/bionic/libc/include/sys/types.h:37:31: fatal error: linux/posix_types.h: No such file or directory

 

无法生成目标文件test.o  , armgcc是一个shell脚本文件,查看错误消息就是找不到文件或目录,仔细查看Linux内核kernel目录,竟然没有include目录以及arch目录,复制完kernel到android源代码目录后同时需要将linux-2.6中的arch和include目录复制到kernel目录即可。

 

没什么技术含量,纯粹记录错误:)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值