Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 铿锵++;编译简单boost程序链接器命令失败_C++_Boost_Clang - Fatal编程技术网

C++ 铿锵++;编译简单boost程序链接器命令失败

C++ 铿锵++;编译简单boost程序链接器命令失败,c++,boost,clang,C++,Boost,Clang,我一直在关注StackOverflow和其他资源的许多其他答案,但我无法让clang在macOS上使用Boost1.63。简单安装的boost: /bootstrap.sh--前缀=/usr/local /b2 cxflags=“-stdlib=libc++”linkflags=“-stdlib=libc++” 现在。我只是在做以下事情: #include <boost/program_options.hpp> namespace po = boost::program_option

我一直在关注StackOverflow和其他资源的许多其他答案,但我无法让clang在macOS上使用Boost1.63。简单安装的boost:

/bootstrap.sh--前缀=/usr/local

/b2 cxflags=“-stdlib=libc++”linkflags=“-stdlib=libc++”

现在。我只是在做以下事情:

#include <boost/program_options.hpp>
namespace po = boost::program_options;

int main()
{
   // Declare the supported options.
   po::options_description desc("Allowed options");
   desc.add_options()
    ("help", "produce help message")
    ("compression", po::value<int>(), "set compression level")
   ;
}
#包括
名称空间po=boost::program\u选项;
int main()
{
//声明支持的选项。
采购订单:选项描述描述(“允许选项”);
说明添加选项()
(“帮助”,“生成帮助消息”)
(“压缩”,po::value(),“设置压缩级别”)
;
}
这给了我:

clang++  \
        -g -Wall -Wextra  \
        -std=c++14  \
        -stdlib=libc++ \
        -I /usr/local/include \
        -L /usr/local/lib \
        ./src/main.cpp \
        -o ./src/tool.o

Undefined symbols for architecture x86_64:
  "boost::program_options::validators::check_first_occurrence(boost::any const&)", referenced from:
      void boost::program_options::validate<int, char>(boost::any&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, int*, long) in main-afe96c.o
  "boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) in main-afe96c.o
  "boost::program_options::options_description::add_options()", referenced from:
      _main in main-afe96c.o
  "boost::program_options::options_description::m_default_line_length", referenced from:
      _main in main-afe96c.o
  "boost::program_options::options_description::options_description(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned int)", referenced from:
      _main in main-afe96c.o
  "boost::program_options::invalid_option_value::invalid_option_value(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      void boost::program_options::validate<int, char>(boost::any&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<int, std::__1::allocator<int> >*, int) in main-afe96c.o
      void boost::program_options::validate<int, char>(boost::any&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, int*, long) in main-afe96c.o
  "boost::program_options::error_with_option_name::error_with_option_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) in main-afe96c.o
  "boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)", referenced from:
      _main in main-afe96c.o
  "boost::program_options::options_description_easy_init::operator()(char const*, char const*)", referenced from:
      _main in main-afe96c.o
  "boost::program_options::arg", referenced from:
      boost::program_options::typed_value<std::__1::vector<int, std::__1::allocator<int> >, char>::name() const in main-afe96c.o
  "boost::program_options::error_with_option_name::substitute_placeholders(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const", referenced from:
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::validation_error> > in main-afe96c.o
      vtable for boost::exception_detail::error_info_injector<boost::program_options::validation_error> in main-afe96c.o
      vtable for boost::program_options::validation_error in main-afe96c.o
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> > in main-afe96c.o
      vtable for boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> in main-afe96c.o
      vtable for boost::program_options::invalid_option_value in main-afe96c.o
  "boost::program_options::error_with_option_name::what() const", referenced from:
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::validation_error> > in main-afe96c.o
      vtable for boost::exception_detail::error_info_injector<boost::program_options::validation_error> in main-afe96c.o
      vtable for boost::program_options::validation_error in main-afe96c.o
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> > in main-afe96c.o
      vtable for boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> in main-afe96c.o
      vtable for boost::program_options::invalid_option_value in main-afe96c.o
  "boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, bool) const", referenced from:
      vtable for boost::program_options::typed_value<std::__1::vector<int, std::__1::allocator<int> >, char> in main-afe96c.o
  "typeinfo for boost::program_options::error_with_option_name", referenced from:
      typeinfo for boost::program_options::validation_error in main-afe96c.o
  "typeinfo for boost::program_options::value_semantic_codecvt_helper<char>", referenced from:
      typeinfo for boost::program_options::typed_value<std::__1::vector<int, std::__1::allocator<int> >, char> in main-afe96c.o
  "vtable for boost::program_options::error_with_option_name", referenced from:
      boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&) in main-afe96c.o
      boost::program_options::error_with_option_name::~error_with_option_name() in main-afe96c.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for boost::program_options::value_semantic_codecvt_helper<char>", referenced from:
      boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper() in main-afe96c.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [annorna] Error 1
clangg++\
-g-Wall-Wextra\
-std=c++14\
-stdlib=libc++\
-I/usr/本地/包括\
-L/usr/local/lib\
./src/main.cpp\
-o./src/tool.o
架构x86_64的未定义符号:
“boost::program\u options::validators::check\u first\u occurrence(boost::any const&)”,引用自:
在main-afe96c.o中void boost::program_options::validate(boost::any&,std:u 1::vector const&,int*,long)
“boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)”,引用自:
main-afe96c.o中的boost::program_options::validation_error::validation_error::kind_t,std:::_1::basic_string const&,std::_1::basic_string const&,int)
“boost::program_options::options_description::add_options()”,引用自:
_main in main-afe96c.o
“boost::program_options::options_description::m_default_line_length”,引用自:
_main in main-afe96c.o
“boost::program_options::options_description::options_description(std::_1::basic_string const&,unsigned int,unsigned int)”,引用自:
_main in main-afe96c.o
“boost::program_options::invalid_option_value::invalid_option_value(std::_1::basic_string const&)”,引用自:
在main-afe96c.o中,void boost::program_options::validate(boost::any&,std::u 1::vector const&,std:u 1::vector*,int)
在main-afe96c.o中void boost::program_options::validate(boost::any&,std:u 1::vector const&,int*,long)
“boost::program_options::error_with_option_name::error_with_option_name(std::_1::basic_string const&,std::_1::basic_string const&,int)”,引用自:
main-afe96c.o中的boost::program_options::validation_error::validation_error::kind_t,std:::_1::basic_string const&,std::_1::basic_string const&,int)
“boost::program\u options::options\u description\u easy\u init::operator()(字符常量*,boost::program\u options::value\u语义常量*,字符常量*)”,引用自:
_main in main-afe96c.o
“boost::program\u options::options\u description\u easy\u init::operator()(char const*,char const*)”,引用自:
_main in main-afe96c.o
“boost::program_options::arg”,引用自:
boost::program_options::在main-afe96c.o中键入的_值::name()常量
“boost::program_options::error_with_option_name::substitute_占位符(std::u 1::basic_string const&)const”,引用自:
boost的vtable::exception\u detail::clone\u impl在main-afe96c.o中
增压vtable::异常\详细信息::错误\信息\ main-afe96c.o中的喷油器
boost vtable::program_options::main-afe96c.o中的验证错误
boost的vtable::exception\u detail::clone\u impl在main-afe96c.o中
增压vtable::异常\详细信息::错误\信息\ main-afe96c.o中的喷油器
boost的vtable::program_options::main-afe96c.o中的_option_值无效
“boost::program_options::error_with_option_name::what()const”,引用自:
boost的vtable::exception\u detail::clone\u impl在main-afe96c.o中
增压vtable::异常\详细信息::错误\信息\ main-afe96c.o中的喷油器
boost vtable::program_options::main-afe96c.o中的验证错误
boost的vtable::exception\u detail::clone\u impl在main-afe96c.o中
增压vtable::异常\详细信息::错误\信息\ main-afe96c.o中的喷油器
boost的vtable::program_options::main-afe96c.o中的_option_值无效
“boost::program\u options::value\u semantic\u codevt\u helper::parse(boost::any&,std::\uuu 1::vector const&,bool)const”,引用自:
boost的vtable::program_options::在main-afe96c.o中键入值
“boost的typeinfo::program_options::error_with_option_name”,引用自:
boost的类型信息::程序选项::main-afe96c.o中的验证错误
“boost的typeinfo::program\u options::value\u semantic\u codecvt\u helper”,引用自:
boost的类型信息::程序选项::在main-afe96c.o中键入值
“boost vtable::program_options::error_with_option_name”,引用自:
main-afe96c.o中的boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&)
boost::program_options::error_with_option_name::~error_with_option_name()在main-afe96c.o中
注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。
“用于boost的vtable::program_options::value_semantic_codecvt_helper”,引用自:
main-afe96c.o中的boost::program_options::value_semantic_codevt_helper::value_semantic_codevt_helper()
注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。
ld:找不到架构x86_64的符号
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
make:**[annorna]错误1

但是,添加
-l增压系统
不起作用。启动boost的解决方案是什么?这条路错了吗?还是我需要其他的旗帜

我想这是
-lboost\u program\u options
。我会被诅咒的。谢谢。我不得不想一想。所以每个选项通常都有一个我需要提供的链接器选项?大多数Boost库都是头库