链接错误以增强Visual Studio Linux项目

时间:2019-05-11 16:55:46

标签: linux visual-studio boost-beast

我在通过Visual Studio Linux项目编译asio代码时遇到问题。我不断收到以下链接错误:

链接对象

  

1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :在函数boost::asio::detail::posix_event::posix_event()': 1>/usr/local/include/boost/asio/detail/impl/posix_event.ipp(42): error : undefined reference to pthread_condattr_setclock'中   1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :在函数boost::asio::detail::posix_thread::~posix_thread()': 1>/usr/local/include/boost/asio/detail/impl/posix_thread.ipp(35): error : undefined reference to pthread_detach中   1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :在函数boost::asio::detail::posix_thread::join()': 1>/usr/local/include/boost/asio/detail/impl/posix_thread.ipp(42): error : undefined reference to pthread_join'中   1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :功能上   boost::asio::detail::posix_thread::start_thread(boost::asio::detail::posix_thread::func_base*)': 1>/usr/local/include/boost/asio/detail/impl/posix_thread.ipp(60): error : undefined reference to pthread_create'   1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :功能上   boost::asio::detail::posix_signal_blocker::posix_signal_blocker()': 1>/usr/local/include/boost/asio/detail/posix_signal_blocker.hpp(43): error : undefined reference to pthread_sigmask'   1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :功能上   boost::asio::detail::posix_signal_blocker::~posix_signal_blocker()': 1>/usr/local/include/boost/asio/detail/posix_signal_blocker.hpp(50): error : undefined reference to pthread_sigmask'   1> D:\ C ++ \ test_beastboost \ test_beastboost \ obj \ x64 \ Debug \ main.o:错误   :在函数std::thread::thread<std::_Bind<void (*(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>))(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&)>>(std::_Bind<void (*(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>))(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&)>&&)': 1>/usr/include/c++/5/thread(137): error : undefined reference to pthread_create'1> collect2中:错误:ld   返回了1个退出状态

我已经编译了boost 1_70,它们位于usr / local / include / boost和usr / local / lib中。

对于我的链接器,我有以下内容:

-L / usr / local / lib / -lboost_system

我也尝试添加-lboost_thread,但无论如何我都在使用标准库线程。

有什么建议吗?

我应该重新编译在ubuntu上的增强功能吗?

1 个答案:

答案 0 :(得分:0)

如果您使用cmake来编译项目,则可以在CMakeLists.txt文件中使用以下内容:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")

FIND_PACKAGE( Boost 1.70 COMPONENTS REQUIRED date_time)
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )

ADD_EXECUTABLE( exe cpp.cpp )

target_include_directories(exe PRIVATE ${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES( exe LINK_PUBLIC ${Boost_LIBRARIES} )

install(TARGETS exe RUNTIME DESTINATION bin)

这至少应该修复总和错误。

如果您不将cmake与vscode一起使用,建议您观看如何从愚人节中获得cmake好的播放效果播放列表