我开始使用 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 header 的文件夹。
最佳答案
你需要告诉链接器链接到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 世界的新手,请查看 this gcc 介绍文件。
关于c++ - g++ 找不到 header ,但我确实包含了它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21435690/