簡體   English   中英

使用柯南軟件包管理器增強鏈接錯誤

[英]Boost link error using Conan package manager

我在使用Conan版本的Boost時遇到以下錯誤。 使用OS的庫(盡管在另一個系統上),代碼可以很好地編譯。

錯誤輸出:

[  2%] Built target logging
[ ...] ....
[ 18%] Linking CXX executable ../bin/DEPTHFILE_UTILS
../lib/lib_logging.so: undefined reference to "boost::log::v2_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long, std::locale const&)"
../lib/lib_logging.so: undefined reference to "boost::log::v2_mt_posix::parse_error::throw_(char const*, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::log::v2_mt_posix::attribute_name const&)"
../lib/lib_logging.so: undefined reference to "boost::log::v2_mt_posix::sinks::text_file_backend::consume(boost::log::v2_mt_posix::record_view const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
collect2: error: ld returned 1 exit status
src/CMakeFiles/DEPTHFILE_UTILS.dir/build.make:146: set di istruzioni per l'obiettivo "bin/DEPTHFILE_UTILS" non riuscito
make[2]: *** [bin/DEPTHFILE_UTILS] Errore 1
CMakeFiles/Makefile2:1018: set di istruzioni per l'obiettivo "src/CMakeFiles/DEPTHFILE_UTILS.dir/all" non riuscito
make[1]: *** [src/CMakeFiles/DEPTHFILE_UTILS.dir/all] Errore 2
Makefile:94: set di istruzioni per l'obiettivo "all" non riuscito

我已經在我的logging.h標頭中定義了BOOST_LOG_DYN_LINK ,在其中聲明了所有與日志相關的宏。 lib_logging.soinit()方法所在的位置。 CMake會找到所有需要的庫,並且工作正常。

柯南配置:

[requires]
boost/1.66.0@conan/stable
gtest/1.8.1@bincrafters/stable
opencv/3.4.5@conan/stable

[generators]
cmake

[options]
boost:shared=True

任何幫助表示贊賞。

系統信息:

  • 在具有Ubuntu 16.04 LTS的虛擬機上運行
  • 柯南1.13.0版
  • CXX編譯器GNU
  • CXX編譯器版本5.4.0

柯南配置:

arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++
compiler.version=5
os=Linux
os_build=Linux

命令在build目錄(不在源構建中)內運行,使用以下方法作為參考:

virtualenv vconan -no-site-package
source vconan/bin/activate
pip install -upgrade pip
pip install conan
conan install ../
deactivate
cmake -DCMAKE_BUILD_TYPE=Release -DCONAN_BUILD=ON ..
make

感謝@uilianries提出的問題,我意識到了自己的錯誤:

compiler.libcxx=libstdc++

這是錯的 在安裝命令中,我添加了以下內容:

conan install --settings compiler.libcxx="libstdc++11" ../

您也可以在~/.conan/profiles/default調整~/.conan/profiles/default compiler.libcxx=libstdc++11編輯默認配置~/.conan/profiles/default

現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM