FUSE是用户空间文件系统的简称,使用Fuse,您可以在用户空间创建功能完备的文件系统,而无需具备内核编程的知识。目前的Linux发行版本大多都默认安装了FUSE,不过今天我们要下载最新的源代码进行安装。
1) 下载最新的源码包(fuse-2.8.3.tar.gz),解压“tar xvf fuse-2.8.3.tar.gz”,进入目录“cd fuse-2.8.3”;
2) 按部就班地首先“./configure”,然后“make”,接着“make install”,最后“modprobe fuse”加载内核模块fuse.ko;
3) 切换到example目录下“cd example”,编译fusexmp.c测试一下是否安装成功:
[root@localhost example]# gcc -Wall `pkg-config fuse --cflags --libs` fusexmp.c -o fusexmp
Package fuse was not found in the pkg-config search path.
Perhaps you should add the directory containing `fuse.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fuse' found
在包含自 /usr/local/include/fuse/fuse.h:26 的文件中,
从 /usr/local/include/fuse.h:9,
从 fusexmp.c:22:
/usr/local/include/fuse/fuse_common.h:32:2: 错误:#error Please add -D_FILE_OFFSET_BITS=64 to your compile flags!
根据提示信息,我们重新加入参数重新编译:
[root@localhost example]# gcc -Wall `pkg-config fuse --cflags --libs` -D_FILE_OFFSET_BITS=64 fusexmp.c -o fusexmp
Package fuse was not found in the pkg-config search path.
Perhaps you should add the directory containing `fuse.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fuse' found
/tmp/ccKPr0PM.o: In function `main':
fusexmp.c:(.text+0x726): undefined reference to `fuse_main_real'
collect2: ld 返回 1
事情发展到如此地步,凭我的知识已经是无法再向前迈步了。俗话说的好,苦海无边回头是岸,只好修改参数重新编译FUSE。
1)卸载上面安装的fuse:“rmmod fuse”,“make uninstall”,“make clean”;
2)指定“/usr”为安装目录重新安装:“./configure --prefix=/usr”,“make”,“make install”;
3) 加载fuse.ko模块“modprobe fuse”,然后在切换到example目录下编译fusexmp.c。
结果是成功的,没有提示认识错误信息。注意,FUSE的第一次是编译安装是成功的,因此fusexmp.c编译失败一定是少加了什么编译参数或目录设置而造成的,仔细看看Makefile文件应该可以解决问题。今天天气太冷,就偷个懒。
来源:https://www.cnblogs.com/dengke/archive/2010/02/15/1668325.html