链接 CXX 可执行文件期间架构 x86_64 的未定义符号

问题描述 投票:0回答:1

我正在开发一个 javascript 运行时项目(它使用静态 v8 库来执行 javascript)。我为 x86 架构编译了 v8。我的Boost版本安装了 系统是1.68.0 这是我正在使用的 cmake 文件的片段

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -Wno-c11-extensions")
set(BOOST_VERSION_MIN "1.67.0")
set(BOOST_ROOT "/usr/local/lib/boost")

我无法理解错误是由于编译器或cmake文件还是由于二进制整体文件本身导致的错误

clang --version
clang version 9.0.1 
Target: x86_64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm@9/bin
Undefined symbols for architecture x86_64:
  "boost::system::detail::system_category_instance", referenced from:
      _main in main.cpp.o
      boost::asio::io_context::io_context() in main.cpp.o
      boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) in main.cpp.o
      boost::asio::detail::scheduler::~scheduler() in main.cpp.o
      boost::asio::detail::scheduler::~scheduler() in main.cpp.o
      boost::asio::detail::scheduler::shutdown() in main.cpp.o
      boost::asio::local::basic_endpoint<boost::asio::local::stream_protocol>::basic_endpoint(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main.cpp.o
      ...
  "boost::system::detail::generic_category_instance", referenced from:
      boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in main.cpp.o
      boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in main.cpp.o
      boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in module_loader.cpp.o
      boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in module_loader.cpp.o
      boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in native_module_config.cpp.o
      boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in native_module_config.cpp.o
      boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in native_module_context.cpp.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
c++ boost ld
1个回答
0
投票

这是编译过程中的链接器错误。就是说编译后把所有东西链接在一起的时候,找不到

boost::system::detail::system_category_instance

请看一下这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.