新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2008-08-22

[Linux]とーーーーっても古い環境でFUSEをコンパイルする時のメモ

RHL7.3にFUSE2.4.2をインストールしたときに軽くつまづいたので、メモ。
# 今時RHL7.3かよ!とか言うツッコミはごもっともだが、そこはヌルーさせていただく><

まず、以下のrpmをftp.riken.go.jp辺りでゲット&インストール。
- binutils-2.11.93.0.2-11.i386.rpm
- cpp-2.96-110.i386.rpm
- gcc-2.96-110.i386.rpm
- glibc-devel-2.2.5-34.i386.rpm
- glibc-kernheaders-2.4-7.14.i386.rpm
- kernel-source-2.4.18-3.i386.rpm

で、fuse2.4.2をインストール。

# ./configure
# make

でもこける。

inode.c:597: unknown field `alloc_inode' specified in initializer
inode.c:597: warning: initialization from incompatible pointer type
inode.c:598: unknown field `destroy_inode' specified in initializer
inode.c:598: warning: initialization from incompatible pointer type
inode.c:599: field `read_inode' already initialized
inode.c: In function `fuse_inode_init_once':
inode.c:702: warning: implicit declaration of function `inode_init_once'
make[1]: *** [inode.o] エラー 1
make[1]: 出ます ディレクトリ `/root/fuse-2.4.2/kernel'
make: *** [all-recursive] エラー 1

見るも無惨><

いろいろググって、http://wl500g.info/showthread.php?t=2036&page=9という記事を見つけた。

それによると、./kernel/inode.cの597行近辺を直すと良いとのこと。

static struct super_operations fuse_super_operations = {
// .alloc_inode = fuse_alloc_inode,
// .destroy_inode = fuse_destroy_inode,
.read_inode = fuse_read_inode,
.clear_inode = fuse_clear_inode,
.put_super = fuse_put_super,
.statfs = fuse_statfs,
.show_options = fuse_show_options,
};


で、再度make。

# 前略

make[2]: 出ます ディレクトリ `/root/fuse-2.4.2/util'
make[1]: 出ます ディレクトリ `/root/fuse-2.4.2/util'
Making install in example
make[1]: 入ります ディレクトリ `/root/fuse-2.4.2/example'
make[2]: 入ります ディレクトリ `/root/fuse-2.4.2/example'
make[2]: `install-exec-am' に対して行うべき事はありません。
make[2]: `install-data-am' に対して行うべき事はありません。
make[2]: 出ます ディレクトリ `/root/fuse-2.4.2/example'
make[1]: 出ます ディレクトリ `/root/fuse-2.4.2/example'
make[1]: 入ります ディレクトリ `/root/fuse-2.4.2'
make[2]: 入ります ディレクトリ `/root/fuse-2.4.2'
make[2]: `install-exec-am' に対して行うべき事はありません。
test -z "/usr/local/lib/pkgconfig" || mkdir -p -- "/usr/local/lib/pkgconfig"
/usr/bin/install -c -m 644 'fuse.pc' '/usr/local/lib/pkgconfig/fuse.pc'
make[2]: 出ます ディレクトリ `/root/fuse-2.4.2'
make[1]: 出ます ディレクトリ `/root/fuse-2.4.2'


ヌメっと入ってくれた。気持ちいいッ!!><

0 件のコメント: