ccls: link error to LLVMSupport
CMakeFiles/ccls.dir/src/main.cc.o: In function `OptionValue':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:575: undefined reference to `vtable for llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `opt<char [5], llvm::cl::desc>':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1359: undefined reference to `vtable for llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `parser':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1028: undefined reference to `vtable for llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `OptionValue':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:575: undefined reference to `vtable for llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `opt<char [9], llvm::cl::desc, llvm::cl::value_desc>':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1359: undefined reference to `vtable for llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `parser':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1028: undefined reference to `vtable for llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `OptionValue':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:575: undefined reference to `vtable for llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `opt<char [16], llvm::cl::desc, llvm::cl::value_desc>':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1359: undefined reference to `vtable for llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >'
CMakeFiles/ccls.dir/src/main.cc.o: In function `parser':
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1028: undefined reference to `vtable for llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
/home/shc/code/repos/ccls/build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04/include/llvm/Support/CommandLine.h:1028: undefined reference to `vtable for llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Is the bundled LLVM not compiled with c++11?
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 17 (17 by maintainers)
Yes,
-stdlibis used in both compiling and linking.https://github.com/llvm-mirror/clang/tree/master/lib/Driver/ToolChains/Gnu.cpp#L2438
https://github.com/llvm-mirror/clang/tree/master/lib/Driver/ToolChain.cpp#L752
@MaskRay @scturtle If you want to use libcxx only, both linker flag and compile option should be set in cmake:
I asked this question days ago and this is the only solution I have ever found