だるい@あぷれんてぃす

ニートの雑記&ツイートまとめ

(CentOS)levelDBをインストールしてみた

2011-06-23 23:01:50 | 日記
VMPlayer:v3.14
OS:CentOS 5.5(i386)
チェックアウトディレクトリ:/usr/local/src/subversion (あらかじめ作成)

levelDBの説明記事:http://www.publickey1.jp/blog/11/nosqlleveldbchromeindexeddb.html

# mkdir /usr/local/src/subversion
# cd /usr/local/src/subversion
# svn checkout http://leveldb.googlecode.com/svn/trunk/ leveldb-read-only
# cd leveldb-read-only
# make
g++ -c -I. -I./include -DLEVELDB_PLATFORM_POSIX -std=c++0x -O2 -DNDEBUG db/db_bench.cc -o db/db_bench.o
cc1plus: error: unrecognized command line option "-std=c++0x"
make: *** [db/db_bench.o] エラー 1
#

はーいさっそくエラー来ました!!
つーか、全然エラー内容がわかりましぇ~ん
c++0x使ってるのか・・・
とりあえず調査だ・・・

俺は、所詮二番煎じでいい!!キリッ

2011/06/23 追記
↓----
とりあえず、gcc-4.6.0を入れた
(参考リンク:http://blog.goo.ne.jp/darui_kara/e/f671b4751340948539a9f2f159f72803)

makeファイルの内容を書き換えてみる
# cd /usr/local/src/subversion/leveldb-read-only
# vi MakeFile

以下の行を変更した
(元の行はコメントアウト)
CC = g++ → CC = /usr/local/gcc-4.6.0/bin/g++

※ 注意!! gccのインストール先は、"参考テキスト:gcc-build-install.txt"にしたがった場合になります

MakeFileの内容を抜粋
----
# Copyright (c) 2011 The LevelDB Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. See the AUTHORS file for names of contributors.

#CC = g++
CC = /usr/local/gcc-4.6.0/bin/g++

#-----------------------------------------------
# Uncomment exactly one of the lines labelled (A), (B), and (C) below
# to switch between compilation modes.

OPT = -O2 -DNDEBUG # (A) Production use (optimized mode)
# OPT = -g2 # (B) Debug mode, w/ full line-level debugging symbols
# OPT = -O2 -g2 -DNDEBUG # (C) Profiling mode: opt, but w/debugging symbols
#-----------------------------------------------





----


じゃ、もいっかいmakeしてみる
# make
/usr/local/gcc-4.6.0/bin/g++ -c -I. -I./include -DLEVELDB_PLATFORM_POSIX -std=c++0x -O2 -DNDEBUG db/db_bench.cc -o db/db_bench.o
/usr/local/gcc-4.6.0/libexec/gcc/i686-pc-linux-gnu/4.6.0/cc1plus: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
make: *** [db/db_bench.o] エラー 1

gcc-4.6.0をコンパイルするときにも出たな・・・
以下のコマンドでshared librariesのパスを通す。
# export LD_LIBRARY_PATH=/usr/local/lib
# echo $LD_LIBRARY_PATH
/usr/local/lib
#

参考リンク:http://oshiete.goo.ne.jp/qa/1511011.html

よし、もいっかいmakeだ
# make
/usr/local/gcc-4.6.0/bin/g++ -c -I. -I./include -DLEVELDB_PLATFORM_POSIX -std=c++0x -O2 -DNDEBUG db/db_bench.cc -o db/db_bench.o
In file included from ./port/port.h:14:0,
from ./util/coding.h:17,
from ./db/dbformat.h:13,
from ./db/db_impl.h:9,
from db/db_bench.cc:8:
./port/port_posix.h:14:22: 致命的エラー: cstdatomic: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
make: *** [db/db_bench.o] エラー 1

。 。゜。゜(ノД`)゜。゜。
うわぁ~ん、致命的エラーとか出てるよ・・・
つーか、これってソース内で読み込んでるファイルがないってこと???
(えっ?えぇぇぇぇ!!)

以下サイト内を"cstdatomic"で検索してみると同じエラーがあり引っかかってくれる
参考リンク:http://d.hatena.ne.jp/tullio/20110531/1306855553

# vi port/port_posix.h

以下のインクルードを変更する
(元の行はコメントアウト)
#include <cstdatomic> → #include <atomic>

ソースコード内容の変更後を一部抜粋
----
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. See the AUTHORS file for names of contributors.
//
// See port_example.h for documentation for the following types/functions.

#ifndef STORAGE_LEVELDB_PORT_PORT_POSIX_H_
#define STORAGE_LEVELDB_PORT_PORT_POSIX_H_

#include <endian.h>
#include <pthread.h>
#include <stdint.h>
#include <string>
//#include <cstdatomic>
#include <atomic>
#include <cstring>

namespace leveldb {
namespace port {




----

またまた、make
# make

おっ!通ったぽいぞ!!
よっしじゃあ、テストを流してみる
# ./arena_test
./arena_test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./arena_test)
./arena_test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.10' not found (required by ./arena_test)

・・・

参考リンク:http://d.hatena.ne.jp/tullio/20110531/1306855553
以下のキーワードでサイト内を検索
検索キーワード:./arena_test

デフォルトのgccを見ているようなので、ファイルがないと言われているようです。
以下のようにパスの追加を行う
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.6.0/lib
# echo $LD_LIBRARY_PATH
/usr/local/lib:/usr/local/gcc-4.6.0/lib

再度、テストを行う
# ./arena_test
==== Test ArenaTest.Empty
==== Test ArenaTest.Simple
==== PASSED 2 tests

通った・・・
次、DBのテスト・・・
# ./db_test



Step 9800 of 10000
2684 entries compared: ok=1
2657 entries compared: ok=1
2684 entries compared: ok=1
Step 9900 of 10000
2705 entries compared: ok=1
2684 entries compared: ok=1
2705 entries compared: ok=1
==== PASSED 24 tests
#

エラーは出てないから問題ないようだ・・・
これでインストールはできたけど・・・


どうやって使うんだよ!さっぱりだ!!
それに・・・使用する時に以下の設定するのは面倒だな・・・
# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/gcc-4.6.0/lib

はぁ・・・まだまだ課題は山積みだ・・・

インストールメモのテキスト→ダウンロード

| /:./:.:.:.:/:.:.:/:.|:.|:.:.|  ヽヽ::\.:.:.::\:.::.:.:.ヽ.::.:.:.:.ヽ.:.:..|::.:.:.:.:.:.:.:.:.:|
| |:.:|:.:.:.:.|:.:.:.|i:.ハハ:.:|   ヽ ャ 廾 十:ト 、.:..ヽ.:.::.:.:.|:.:..|:.:.:.:.:.:.:.:.:.:.:|
| i:.:|:.:.:.:.|:.:.:.||,|ィ爪「    \\ =≠z.\:`:.|:.:.:.:.:.|:./|::.:.:.:.:.:.:.:.:.:.:|
i. |:.|:.:.:.:.|:.:.:.|リ レ≠=ミ      / {r':::::::i\ヽ|::.:.::.:.|/ |:.:..:.:i:.:.:.:.:.:.:|
 |:.|:.:.:.:.|:.:.:ハ /|r'::::::::}       レv:::::::ri}/ |:..|:.:.ハ |.:.:.:.:.i:..:.:.:.:.:|
 |:.|:.:.:.:.|:.:.:.ハヽVヽ_r'}      _辷__r,タ  |:.:|/ | .i::.:.:.:.i::.:.:.:.:.:|
 ヽ!N:.:.|:.:.:.:.ハ ゝ- ''        :::::::::: /|:.:| / |:.:.:.:.:i::.:.:.:.:.:|
  ヽ.ヽ:Nヽ:.:ハ :::::::::  ヽ           /.:.|./  i.:.:.:.:.:i::.:.:.:.:.:|
     \  |:.人     v ― ァ    /:.:.:.|.  |:..:.:.:.:i::..:.:.:.:.|
      ヽハ:.:.:| \    ` ー    / |:.:.:./   |.:.:.:.:.:i::..:::.:.:.|
       i |:.:.|   ヽ、_    _,. '  ,. |:.:/   .|:.:.:.:.::i::.:.:.:.:..|
        ヽ:|     | ` ´  ,. '´ /:.ム    |.:.:.:.:.:i:.:.:.:.:./
         ヽ    |` ーr‐'´   /:./ \  |:.:.:.:.:.i:..:..:./
              頑張って!!

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。