`
yidongkaifa
  • 浏览: 4052459 次
文章分类
社区版块
存档分类
最新评论

fuse-2.9.0编译 安装到 板子上

 
阅读更多

FUSE介绍:

用户空间文件系统Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFSglusterfslustre使用FUSE实现。

Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。


在我个人看来,fuse就是一层虚构的中间层,承接上层指令,扩充下层操作,达到所谓的"欺骗"行为。主要用途在于一些比较苛刻的地方,比如必须以某种形式返回给上层命令指定的值,才能继续正常交互。我本次主要解决的是一个文件名后缀的问题,如果直接返回,会没有后缀,导致程序无法继续正常进行;所以我在这个中间模拟一层上层指令的响应,使后缀名能够正常返回给上层。That's all。


1.下载fuse-2.9.0:

Download (HTTP): http://downloads.sourceforge.net/fuse/fuse-2.9.0.tar.gz

2.在虚拟机里面编译库:
tar -zxvf fuse-2.9.0.tar.gz
./configure --host=mipsel-linux --prefix=/opt/brcm/fuse-2.9.0-release/
make&&make install
modprobe fuse

3.在板子上加入动态库的支持:

// 把虚拟机里面的库拷贝到PC上:
cp fuse-2.9.0-release/lib/libfuse.so.2.9.0 /mnt/hgfs/bcm/distrib/

// 把PC上的库拷贝到板子上:
cp libfuse.so.2.9.0 /usr/local/lib/

cd /usr/local/lib/
ln -sf libfuse.so.2.9.0 libfuse.so.2


4.在编译程序时,要加入:

CFLAGS += -I/***/fuse-2.9.0-release/include/
LFLAGS += -L/***/fuse-2.9.0-release/lib/ -lfuse

(其中 *** 代表你编译fuse之后库所存放的目录绝对路径)。


5.如果程序编译出错:

fuse_common.h:33:2: error: #error Please add -D_FILE_OFFSET_BITS=64 to your compile flags!

解决方案一:

在你的程序Makefile编译选项里面加入:

-Wall `pkg-config fuse --cflags --libs` -D_FILE_OFFSET_BITS=64

比如我的:$(CC) -o $(TARGET) $(APPOBJ) $(LFLAGS) $(CFLAGS)

修改成: $(CC) -Wall `pkg-config fuse --cflags --libs` -D_FILE_OFFSET_BITS=64 -o $(TARGET) $(APPOBJ) $(LFLAGS) $(CFLAGS)


解决方案二:

makefile中加入红色字体部分:

CFLAGS += -I/***/fuse-2.9.0-release/include/ -D_FILE_OFFSET_BITS=64 -D_REENTRANT
LFLAGS += -L/***/fuse-2.9.0-release/lib/ -lfuse

编译时直接:$(CC) -o $(TARGET) $(APPOBJ) $(LFLAGS) $(CFLAGS)即可。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics