OS X, CMake, Boost: неопределенные символы для архитектуры x86_64: «boost :: system :: detail :: generic_category_instance» - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь скомпилировать этот репозиторий Git , используя данные инструкции.Однако в строке cmake --build .; я столкнулся со следующей проблемой:

Undefined symbols for architecture x86_64:
  "boost::system::detail::generic_category_instance", referenced from:
      boost::system::generic_category() in quorum_intersection.cpp.o
ld: symbol(s) not found for architecture x86_64

Я отредактировал файл CMakeLists.txt, чтобы включить некоторые из предыдущих ответов, которые я видел в похожих потоках StackOverflow.Ниже приведен файл CMakeLists.txt, который я сейчас использую.

cmake_minimum_required (VERSION 2.6)
project (stellar-quorums-verifier)
set(CMAKE_CXX_STANDARD 14)

set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED OFF)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.66.0 COMPONENTS graph log program_options REQUIRED system)

if(Boost_FOUND)
    add_definitions(-DBOOST_LOG_DYN_LINK)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(quorum_intersection quorum_intersection.cpp)
    target_link_libraries(quorum_intersection ${Boost_LIBRARIES})
    TARGET_LINK_LIBRARIES(quorum_intersection ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY})
endif()

set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set (CMAKE_CXX_COMPILER_WORKS TRUE)
set (CMAKE_C_COMPILER_WORKS TRUE)

Я установил Boost, загрузив исходный код и запустив ./b2 cxxstd=14 и ./b2 install, как описано здесь .

Что меня смущает, так это то, что вывод cmake ../; включает

-- Found Threads: TRUE  
-- Boost version: 1.68.0
-- Found the following Boost libraries:
--   graph
--   log
--   program_options
--   system
--   date_time
--   log_setup
--   filesystem
--   thread
--   regex
--   chrono
--   atomic
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/Uthsav/Desktop/quorum_intersection-master/build

, поэтому кажется, что система должна быть определена?Поэтому я не уверен, почему он говорит, что boost :: system не определена.Я провел почти всю ночь, пытаясь запустить код из этого репозитория Git - если у кого-нибудь есть какой-либо совет, я был бы очень признателен.

1 Ответ

0 голосов
/ 10 февраля 2019

Я получил сборку, добавив

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3 -lboost_system -lboost_thread")

в файл CMakeLists.txxt.Не уверен, почему это работает, но я где-то нашел его в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...