С vcpkg, как мне построить boost, используя другой стандарт c ++? - PullRequest
0 голосов
/ 26 ноября 2018

Создание приложения, связанного со сборкой надстройки vcpkg по умолчанию для macos 10.14.1, приводит к следующим ошибкам:

Undefined symbols for architecture x86_64:
  "boost::system::detail::system_category_instance", referenced from:
      boost::system::system_category()     in main.cxx.o
      boost::asio::io_context::run()    in main.cxx.o
      boost::asio::detail::socket_ops::close(int, unsigned char&, bool, boost::system::error_code&) in main.cxx.o
      boost::asio::detail::socket_holder::~socket_holder() in main.cxx.o
      boost::asio::detail::reactive_socket_service_base::destroy(boost::asio::detail::reactive_socket_service_base::base_implementation_type&) in main.cxx.o
      _main in main.cxx.o
      boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp> boost::asio::connect<boost::asio::ip::tcp, boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp> >(boost::asio::basic_socket<boost::asio::ip::tcp>&, boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>, boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>) in main.cxx.o
      ...
  "boost::system::detail::generic_category_instance", referenced from:
      boost::system::generic_category()     in main.cxx.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [cleverly] Error 1
make[1]: *** [CMakeFiles/cleverly.dir/all] Error 2
make: *** [all] Error 2

Если я правильно читаю следующее:

Я предполагаю, что boost должен быть перекомпилирован с той же версией c ++, что и приложение.

С vcpkg как можноизменить стандарт c ++, используемый для компиляции библиотек наддува?

Обновления

libboost_system.a действительно 64-битная.make запускается с VERBOSE = 1:

/usr/local/Cellar/cmake/3.12.4/bin/cmake -E cmake_link_script CMakeFiles/cleverly.dir/link.txt --verbose=1
/usr/local/bin/g++-HEAD   -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  CMakeFiles/cleverly.dir/Users/sheel/Projects/sheeldme/cleverly-misogamist/source/main.cxx.o  -o cleverly /opt/vcpkg/installed/x64-osx/debug/lib/libboost_system.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_filesystem.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_date_time.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_thread.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_regex.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_serialization.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_chrono.a /opt/vcpkg/installed/x64-osx/debug/lib/libboost_atomic.a

Таблица символов через: objdump -t libboost_system.a

libboost_system.a(error_code.o):    file format Mach-O 64-bit x86-64

SYMBOL TABLE:
0000000000016138 l       __DATA,__bss   __ZGVZNK5boost6system6detail22generic_error_category7messageEiE11unknown_err
0000000000016120 l       __DATA,__bss   __ZZNK5boost6system6detail22generic_error_category7messageEiE11unknown_err
0000000000001080 l       __TEXT,__gcc_except_tab    GCC_except_table0
0000000000016178 l       __DATA,__bss   __ZGVZN5boost6system6detail20generic_category_ncxEvE25generic_category_instance
0000000000016160 l       __DATA,__bss   __ZZN5boost6system6detail20generic_category_ncxEvE25generic_category_instance
0000000000016158 l       __DATA,__bss   __ZGVZN5boost6system6detail19system_category_ncxEvE24system_category_instance
0000000000016140 l       __DATA,__bss   __ZZN5boost6system6detail19system_category_ncxEvE24system_category_instance
0000000000001060 gw    F __TEXT,__text  __ZN5boost6system14error_category12std_categoryD0Ev
0000000000001050 gw    F __TEXT,__text  __ZN5boost6system14error_category12std_categoryD1Ev
0000000000000e90 g     F __TEXT,__text  __ZN5boost6system6detail19system_category_ncxEv
0000000000000f20 g     F __TEXT,__text  __ZN5boost6system6detail20generic_category_ncxEv
0000000000001030 gw    F __TEXT,__text  __ZN5boost6system6detail21system_error_categoryD0Ev
0000000000000f10 gw    F __TEXT,__text  __ZN5boost6system6detail21system_error_categoryD1Ev
0000000000000fb0 gw    F __TEXT,__text  __ZN5boost6system6detail22generic_error_categoryD0Ev
0000000000000fa0 gw    F __TEXT,__text  __ZN5boost6system6detail22generic_error_categoryD1Ev
0000000000001010 gw    F __TEXT,__text  __ZNK5boost6system14error_category10equivalentERKNS0_10error_codeEi
0000000000000fe0 gw    F __TEXT,__text  __ZNK5boost6system14error_category10equivalentEiRKNS0_15error_conditionE
0000000000001070 gw    F __TEXT,__text  __ZNK5boost6system14error_category12std_category4nameEv
0000000000000fd0 gw    F __TEXT,__text  __ZNK5boost6system14error_category23default_error_conditionEi
0000000000000220 g     F __TEXT,__text  __ZNK5boost6system6detail21system_error_category23default_error_conditionEi
0000000000001040 gw    F __TEXT,__text  __ZNK5boost6system6detail21system_error_category4nameEv
0000000000000e00 g     F __TEXT,__text  __ZNK5boost6system6detail21system_error_category7messageEi
0000000000000fc0 gw    F __TEXT,__text  __ZNK5boost6system6detail22generic_error_category4nameEv
0000000000000000 g     F __TEXT,__text  __ZNK5boost6system6detail22generic_error_category7messageEi
0000000000001148 gw      __DATA,__const __ZTIN5boost12noncopyable_11noncopyableE
0000000000001220 gw      __DATA,__const __ZTIN5boost6system14error_category12std_categoryE
0000000000001160 gw      __DATA,__const __ZTIN5boost6system14error_categoryE
00000000000011e0 g       __DATA,__const __ZTIN5boost6system6detail21system_error_categoryE
0000000000001180 g       __DATA,__const __ZTIN5boost6system6detail22generic_error_categoryE
0000000000001280 gw      __TEXT,__const __ZTSN5boost12noncopyable_11noncopyableE
00000000000012e0 gw      __TEXT,__const __ZTSN5boost6system14error_category12std_categoryE
0000000000001260 gw      __TEXT,__const __ZTSN5boost6system14error_categoryE
00000000000012b0 g       __TEXT,__const __ZTSN5boost6system6detail21system_error_categoryE
0000000000001230 g       __TEXT,__const __ZTSN5boost6system6detail22generic_error_categoryE
00000000000011f8 gw      __DATA,__const __ZTVN5boost6system14error_category12std_categoryE
0000000000001198 g       __DATA,__const __ZTVN5boost6system6detail21system_error_categoryE
0000000000001100 g       __DATA,__const __ZTVN5boost6system6detail22generic_error_categoryE
0000000000000000         *UND*  __Unwind_Resume
0000000000000000         *UND*  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc
0000000000000000         *UND*  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_
0000000000000000         *UND*  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
0000000000000000         *UND*  __ZTVN10__cxxabiv117__class_type_infoE
0000000000000000         *UND*  __ZTVN10__cxxabiv120__si_class_type_infoE
0000000000000000         *UND*  __ZdlPv
0000000000000000         *UND*  ___cxa_atexit
0000000000000000         *UND*  ___cxa_begin_catch
0000000000000000         *UND*  ___cxa_end_catch
0000000000000000         *UND*  ___cxa_guard_acquire
0000000000000000         *UND*  ___cxa_guard_release
0000000000000000         *UND*  ___dso_handle
0000000000000000         *UND*  ___gxx_personality_v0
0000000000000000         *UND*  ___stack_chk_fail
0000000000000000         *UND*  ___stack_chk_guard
0000000000000000         *UND*  _free
0000000000000000         *UND*  _malloc
0000000000000000         *UND*  _strerror_r

1 Ответ

0 голосов
/ 26 ноября 2018

Патч файла в vcpkg/ports/boost-modular-build-helper/CMakeLists.txt.

Патч пользовательской цели повышения с cxxstd=, за которым следует стандарт, с которым вы хотите скомпилировать.

Ссылка: https://github.com/Microsoft/vcpkg/issues/4476

...