博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

【记录】交叉编译ntfs-3g后找不到libntfs-3g.so和ntfs-3g

Posted on 2011-11-15 17:22  TINZ  阅读(1790)  评论(0编辑  收藏  举报

首先到http://www.tuxera.com/community/ntfs-3g-download/下载一份最新的源码。我当前使用的是【 2011.4.12, released on April 10, 2011】,内核是2.6.37。

解压,到源码根目录下。

配置:

sudo ./configure CC=arm-none-linux-gnueabi-gcc --host=arm-none-linux-gnueabi --prefix=/home/nfs/ --disable-ntfsprogs
--prefix 指定可执行文件和依赖文件(SO,a)的安装目录,现在我指定到NFS文件系统目录下。
--disable-ntfsprogs 指定不编译生成NTFS的一些辅助工具(ntfsfix、ntfscat、ntfscp……)。
编译:
sudo make

 安装(拷贝文件到指定目录):

sudo make install

 上面步骤完成后,发现nfs/bin目录下没有ntfs-3g可执行文件。

经过查看编译过程的打印信息才找到了这个可执行文件,类似信息如下:

arm-none-linux-gnueabi-gcc -DFUSE_USE_VERSION=26 -I../include/fuse-lite -I../include/ntfs-3g -g -O2 -Wall -o .libs/lowntfs-3g lowntfs_3g-lowntfs-3g.o lowntfs_3g-ntfs-3g_common.o  ../libntfs-3g/.libs/libntfs-3g.so -lpthread  -Wl,--rpath -Wl,/home/nfs//lib
creating lowntfs-3g

回到ntfs-3g源码目录下,找到./src/.lib 和 ./libntfs-3g/.lib 这两个隐藏目录,在目录下就可以找到ntfs-3g和libntfs-3g.so文件,拷贝到nfs/bin和/nfs/lib下就可以在板子上面使用ntfs-3g挂载ntfs盘了。

 

PS:根据源码目录下的README说明是可以通过"--with-fuse=external : use external fuse (overriding Linux default)" 不需要内核支持fuse,但是我尝试了,./configure失败,也没继续找原因了。在内核添加fuse支持就可以了,File systems --> FUSE (Filesystem in userspace)support 。