Android开发用Native C碰到的问题

       在Android系统下,用Native C的方式运行一个简单的hello world,结果折腾了两天才运行起来。

       开始直接用arm-none-linux-gnueabi-gcc编译,放到系统下,不能运行,后来查找资料,要写Android.mk,用mm之类的编译才行,于是学习了下Android.mk的知识,http://blog.csdn.net/smfwuxiao/article/details/8530742,http://blog.csdn.net/embedded_hunter/article/details/7167448,写了Android.mk,但是mm之类的都不执行,于是乎http://blog.csdn.net/luoshengyang/article/details/6566662

执行envsetup.sh,还是不行,偶然发现在平台代码路径能用mm这类命令,于是编译,但总是出现no rule to make target 之类的错误,不是很明白,查了查,一些方法都不管用,看到有说把整个工程都编译一下的,于是把整个Android编译了一遍,能编过去了,找到编出来的hello用sdcard copy到Android下面,从控制台运行# ./hello或者#source hello,权限不对,#chmod 777 hello,还是不对,后来不知从哪看到要拷贝到/data下面,cp命令不能用,又学会了用cat hello > /data/hello;在data下看了权限#ll,能运行了。但这样全部编译一遍时间太长。于是又回到mm编译,还是不过,总是no rule to make target “crtbegin_dynamic.o”,于是研究crtbegin_dynamic.o干什么用的,是交叉编译给C用的。但也没能编译过去,后来看到http://android-sz.iteye.com/blog/828246,于是发现又回到了原点arm-none-linux-gnueabi-gcc -static hello.c -o hello。我开始没加-static。这样编译了过去。并能在目标板上执行,目标板是samsung E4412.

       这里学会了用cat,ll,熟悉了chmod,./等命令。

      留有疑问的地方,Android.mk为什么不能用,为什么要在/data/下才能执行。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值