/*****************************************************************

*version:android4.2

*author:冷雨

*嵌入式开发群:122879839

*****************************************************************/

大家可能会发现androidntfs支持的并不是很好,在androidshell下面(adb或者串口),我们可以使用mountntfs的硬盘挂载到挂载点上。可是如果我们进入挂载点之后,对ntfs的盘进行一些读写操作的时候,会发现此时我们的盘是read-only的,也就是说在默认的情况下我们对ntfs的支持是可读不可写。

在遇到这种情况的时候,我们一般的做法是移植一个ntfsandroid上面,当然最简单的方法是使用fuse类的文件系统,这样我们只需要在kernel上让kernel支持fuse就可以,剩下在用户空间跑几个应用程序就OK了。

如果在网上查找这方面的资料会发现移植最多的是一款开源软件NTFS-3G,其代码在官网上可以下载到。由于android支持的底层库和标准linux支持的底层库并不完全一致,所以如果单单把NTFS-3G源代码放到androidbsp代码树里面去编译的话需要修改很多地方,这包括android编译的脚本Android.mk,因为库不同所产生的源码修改部分等。如果大家有充足时间的话可以慢慢的去移植。下面介绍另一种移植方法。

首先下载NTFS-3G源代码,如果是tgz格式的文件的话,使用tarxvfz xvfz.tgz解压,然后进入解压后的目录。

新建两个文件夹,buildinstall。其中build目录用于存放编译的中间文件,而install顾名思义用于存放install的文件。

建立完两个目录后进入build目录,执行如下命令。

../configure --prefix=/root/ntfs-3g_ntfsprogs-2013.1.13/install --host=arm-linux--enable-really-static

make

make install

解释一下,这里的prefix参数指明了我们执行make install之后将文件安装路径。host参数指明了我们编译的平台,其实这里也就是我们的交叉编译器了。enable-really-static参数指明了我们需要静态编译。当然前提是我们能够找到本地的arm-linux交叉编译环境。

这样我们就可以在我们的本地完成整个ntfs-3g的编译过程(静态编译),之所以强调是静态编译是因为我们这里没有使用android bsp的编译环境,如果不是静态编译的话在目标平台上并不能执行。

在我们执行完configure之后便会在我们的build目录下面生成对应的Makefile,也就可以执行我们对应的makemakeinstall命令。这样执行后我们所需要的文件便会放置在install目录下面。接下来将我们生成的文件放到android bsp环境下编译生成的system对应的目录下面就可以了。这样我们就可以在使用的时候直接去调用那些文件。

这样编译将androidbsp环境和ntfs-3g的源码环境分开了,几乎不用怎么修改代码,适用于快速开发的场合,但是需要注意的是,这样编译出来的文件明显的大了很多,因为在编译的时候我们制定了static静态编译选项。


更多相关文章

  1. Android写文件到SDCard的一般过程和代码
  2. Android 获取本地音乐文件
  3. Android 4.0系统源码目录结构详解
  4. Android播放在线音乐文件
  5. 文件读写
  6. Android读取Txt文件
  7. Android文件递归遍历
  8. android 不使用布局文件,完全由代码控制布局实例
  9. Android 删除SD卡文件和文件及创建文件夹和文件

随机推荐

  1. 如何高效地远程部署?自动化运维利器 Fabri
  2. 老大,我可以在实际项目中尝试新技术吗?
  3. 学编程这么久,还傻傻分不清什么是方法(meth
  4. 你见过凌晨五点半的北京吗?
  5. 破解大众点评的字体加密,这一篇就够了。
  6. Python 如何移除旧的版本特性,如何迎接新
  7. 脚本实现Oracle19c_pdb单实例自动安装部
  8. centos 7下安装python3.8
  9. 破解X眼电影字体动态加密|凹凸玩数据
  10. 2000万条直播数据,揭秘斗鱼主播生存现状