g ++ не может найти заголовки, но я их включил

Я начинаю на 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**)'

Папка include — это папка с заголовками levelDB.

2

Решение

Вы должны указать компоновщику ссылку на 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.

5

Другие решения

Это ошибка связи. Не относится к заголовкам. Вы связались с этой библиотекой (-l ..)?

1

По вопросам рекламы [email protected]