【发布时间】:2018-10-23 03:21:54
【问题描述】:
我的环境:
macOS 10.14
Clion 2018.1.2
gcc-8.2
我想用Clion来试试rocksdb。我在示例目录中添加了一个新的CMakeLists.txt 文件。
CMakeLists.txt:
add_subdirectory(examples)
examples/CMakeLists.txt:
add_executable(s_test simple_example.cc)
target_link_libraries(s_test ${LIBS})
但是当我构建 s_test 可执行文件时,我得到如下错误。
Linking CXX shared library librocksdb.dylib
Undefined symbols for architecture x86_64:
"google::FlagRegisterer::FlagRegisterer<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)", referenced from:
__static_initialization_and_destruction_0(int, int) in db_bench_tool.cc.o
__static_initialization_and_destruction_0(int, int) in trace_analyzer_tool.cc.o
"google::SetUsageMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
rocksdb::db_bench_tool(int, char**) in db_bench_tool.cc.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[3]: *** [librocksdb.5.17.0.dylib] Error 1
make[2]: *** [CMakeFiles/rocksdb-shared.dir/all] Error 2
make[1]: *** [examples/CMakeFiles/s_test.dir/rule] Error 2
而且我之前已经安装了 gflags。
ls /usr/local/lib | grep gflags
libgflags.2.2.1.dylib
libgflags.2.2.dylib
libgflags.dylib
libgflags_nothreads.2.2.1.dylib
libgflags_nothreads.2.2.dylib
libgflags_nothreads.dylib
如何解决?谢谢!
【问题讨论】:
-
我没有在您的代码中看到 linking 与 gflags。变量
LIBS似乎为空(未设置)。
标签: makefile cmake clion rocksdb