4

ガイドに従って、次のことを行いました。

brew install rocksdb

そして私はここで立ち往生しました。を使用するにはどうすればよいrocksdbですか?

このサンプル ファイルの内容をコピーして、Mac OS でgcc-5(brew) と(clang)の両方を使用してコンパイルしようとしましたが、どちらもエラーを返します。gccMac OS 10.11.5 で Xcode 7.3.1 を使用しています。

エラーは次のとおりです。

Undefined symbols for architecture x86_64:
  "_rocksdb_backup_engine_close", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_backup_engine_create_new_backup", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_backup_engine_open", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_backup_engine_restore_db_from_latest_backup", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_close", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_get", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_open", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_options_create", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_options_destroy", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_options_increase_parallelism", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_options_optimize_level_style_compaction", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_options_set_create_if_missing", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_put", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_readoptions_create", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_readoptions_destroy", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_restore_options_create", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_restore_options_destroy", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_writeoptions_create", referenced from:
      _main in ccNZ2cWh.o
  "_rocksdb_writeoptions_destroy", referenced from:
      _main in ccNZ2cWh.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

アップデート:

次のように、rocksdb ライブラリを Xcode のヘッダーとライブラリ検索パスに追加した後:

xcodeのスクリーンショット

私はrocksdbのウェブサイトで試しました

rocksdb::DB* db;
rocksdb::Options options;

別の問題に遭遇しました:

DBOptions の問題

4

1 に答える 1

2

rocksdbリンカーがシンボルを見つけられるように、ライブラリの場所とその名前をリンカに伝える必要があります。

homebrewが にインストールさrocksdbれていると仮定すると/usr/local/Cellar/rocksdb/4.5.1、おそらく次のようなものが必要になるでしょう。

gcc-5 -std=c++11 program.c -o program -L /usr/local/Cellar/rocksdb/4.5.1/lib -lrocksdb

または、とにかくシンボリックリンクされているため、バージョン固有ではないものかもしれません:

gcc-5 -std=c++11 program.c -o program -L /usr/local/lib -lrocksdb

(コマンドラインではなく) Xcode GUI を使用する場合は、この投稿の緑、黄、青、赤の軌跡をたどる必要がありますが、上記の値を入力する必要がありrocksdbます。

于 2016-06-04T10:51:01.070 に答える