blog画像が表示されないページは、元画像を間違えて削除してしまっているためです。データが残っていないので、想像力で補ってください。2017/05/27[c/c++]leveldbをcで使いたかったが、libstdc++が必要だったいつもsqliteを使っていたので、たまには違うものを使っておこうと思い、leveldbを使ってみることにした。values.configureなどがないので、makeして、includeディレクトリと、out-staticに入っていたlibleveldb.aを別の場所にコピーして、emnl/leveldb-c-exampleからleveldb_example.cを持ってきた。-pthread・・・大量にリンクエラーが出てきた。deleteがどうのこうのと出ているので、C++のライブラリがいるようだ。もとがC++だから、仕方ないか。snappyとかいうエラーも出ている。データを圧縮するライブラリらしいが、必須なのか?Makefileを見ていくと、どうやらbuild_detect_platformというスクリプトで環境をチェックして、設定をbuild_config.mkに作り、それをMakefileが読込んでいるようだ。私が使っている環境ではsnappyをapt-getか何かでインストール済みのようだ(実を言えば、leveldbもインストール済みだった)。今回は最小構成にしたいので、スクリプトでsnappy検出のところをコメントアウトさせた。これでもlibstdc++.aみたいなものはいるので、あきらめよう。-lstdc++動くようだ。サンプルが、leveldb_put()するときに"value"という文字を書き込んでいるのだが、きっちり5byte分しか書込んでいないので、その後でleveldb_get()したあとにprintf()したときの文字が化けて出力されることがあるようなので、気になる人は\0まで書込むなり、get後に\0を足すなりするとよかろう。Cだけで書かれたNoSQLというかKVSのライブラリがあると、小さそうでよいのだけどね。コメントを追加もっと読み込む...コメントありがとうございます。申し訳ないですが勝手に削除することもあります。コメントを投稿できるのは、このブログのメンバーだけです。