3

私はC ++から始めていますが、すでにうまくいきません...

levelDB の小さなテストをコンパイルしようとしています:

#include <assert.h>
#include "leveldb/db.h"

using namespace std;

int main() {
  leveldb::DB* db;
  leveldb::Options options;
  options.create_if_missing = true;
  leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
  assert(status.ok());

  return 1;
}

g++ コマンドは次のとおりです。

g++ -I include/ testLevelDB.cpp

出力:

/tmp/ccuBnfE7.o: In function `main':
testLevelDB.cpp:(.text+0x14): undefined reference to `leveldb::Options::Options()'
testLevelDB.cpp:(.text+0x57): undefined reference to `leveldb::DB::Open(leveldb::Options const&, std::string const&, leveldb::DB**)'

インクルード フォルダーは、levelDB ヘッダーを含むフォルダーです。

4

2 に答える 2

5

leveldb次のようなライブラリにリンクするようにリンカーに指示する必要があります。

g++ -I include/ testLevelDB.cpp -lleveldb

ただし、ライブラリが含まれていない場合、/usr/libまたは必要な/usr/local/libパスに libleveldb.so が存在すると仮定すると、これは機能しません。$LEVELDB_PATH

g++ -I include -L $LEVELDB_PATH testLevelDB.cpp -lleveldb

-Lとよく似-Iていますが、ライブラリを探す場所をリンカーに伝えます。

また、あなたは gcc の世界に慣れていないようですので、このgcc イントロ ドキュメントをご覧ください。

于 2014-01-29T15:44:02.237 に答える