kpu / kenlm

KenLM: Faster and Smaller Language Model Queries
http://kheafield.com/code/kenlm/
Other
2.5k stars 512 forks source link

Compile problems in Ubuntu artful #145

Open JRMeyer opened 6 years ago

JRMeyer commented 6 years ago
(deepspeech-venv) josh@stealth:~/git/DeepSpeech/kenlm/build$ make
[  0%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/bignum-dtoa.cc.o
[  1%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/bignum.cc.o
[  2%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/cached-powers.cc.o
[  2%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/diy-fp.cc.o
[  3%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/double-conversion.cc.o
[  3%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/fast-dtoa.cc.o
[  4%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/fixed-dtoa.cc.o
[  5%] Building CXX object util/CMakeFiles/kenlm_util.dir/double-conversion/strtod.cc.o
[  5%] Building CXX object util/CMakeFiles/kenlm_util.dir/stream/chain.cc.o
[  6%] Building CXX object util/CMakeFiles/kenlm_util.dir/stream/count_records.cc.o
[  7%] Building CXX object util/CMakeFiles/kenlm_util.dir/stream/io.cc.o
[  7%] Building CXX object util/CMakeFiles/kenlm_util.dir/stream/line_input.cc.o
[  8%] Building CXX object util/CMakeFiles/kenlm_util.dir/stream/multi_progress.cc.o
[  9%] Building CXX object util/CMakeFiles/kenlm_util.dir/stream/rewindable_stream.cc.o
[  9%] Building CXX object util/CMakeFiles/kenlm_util.dir/bit_packing.cc.o
[ 10%] Building CXX object util/CMakeFiles/kenlm_util.dir/ersatz_progress.cc.o
[ 11%] Building CXX object util/CMakeFiles/kenlm_util.dir/exception.cc.o
[ 11%] Building CXX object util/CMakeFiles/kenlm_util.dir/file.cc.o
[ 12%] Building CXX object util/CMakeFiles/kenlm_util.dir/file_piece.cc.o
[ 13%] Building CXX object util/CMakeFiles/kenlm_util.dir/float_to_string.cc.o
[ 13%] Building CXX object util/CMakeFiles/kenlm_util.dir/integer_to_string.cc.o
[ 14%] Building CXX object util/CMakeFiles/kenlm_util.dir/mmap.cc.o
[ 15%] Building CXX object util/CMakeFiles/kenlm_util.dir/murmur_hash.cc.o
[ 15%] Building CXX object util/CMakeFiles/kenlm_util.dir/parallel_read.cc.o
[ 16%] Building CXX object util/CMakeFiles/kenlm_util.dir/pool.cc.o
[ 17%] Building CXX object util/CMakeFiles/kenlm_util.dir/read_compressed.cc.o
[ 17%] Building CXX object util/CMakeFiles/kenlm_util.dir/scoped.cc.o
[ 18%] Building CXX object util/CMakeFiles/kenlm_util.dir/spaces.cc.o
[ 19%] Building CXX object util/CMakeFiles/kenlm_util.dir/string_piece.cc.o
[ 19%] Building CXX object util/CMakeFiles/kenlm_util.dir/usage.cc.o
[ 20%] Linking CXX static library ../lib/libkenlm_util.a
[ 20%] Built target kenlm_util
[ 21%] Building CXX object util/CMakeFiles/bit_packing_test.dir/bit_packing_test.cc.o
[ 21%] Linking CXX executable ../tests/bit_packing_test
CMakeFiles/bit_packing_test.dir/bit_packing_test.cc.o: In function `boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long)':
bit_packing_test.cc:(.text._ZN5boost9unit_test14make_test_caseERKNS_8functionIFvvEEENS0_13basic_cstringIKcEES8_m[_ZN5boost9unit_test14make_test_caseERKNS_8functionIFvvEEENS0_13basic_cstringIKcEES8_m]+0x31): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
collect2: error: ld returned 1 exit status
util/CMakeFiles/bit_packing_test.dir/build.make:104: recipe for target 'tests/bit_packing_test' failed
make[2]: *** [tests/bit_packing_test] Error 1
CMakeFiles/Makefile2:1012: recipe for target 'util/CMakeFiles/bit_packing_test.dir/all' failed
make[1]: *** [util/CMakeFiles/bit_packing_test.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

I get this problem if I try to compile, is it possible to disable testing ?

Although if I try and compile just lmplz, I get:

(deepspeech-venv) josh@stealth:~/git/DeepSpeech/kenlm/build$ make lmplz
[ 50%] Built target kenlm_util
[ 82%] Built target kenlm
[ 95%] Built target kenlm_builder
[ 97%] Linking CXX executable ../../bin/lmplz
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::string const&, std::string const&, int)':
lmplz_main.cc:(.text._ZN5boost15program_options16validation_errorC2ENS1_6kind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_tERKSsS4_i]+0x36): undefined reference to `boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)'
lmplz_main.cc:(.text._ZN5boost15program_options16validation_errorC2ENS1_6kind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_tERKSsS4_i]+0x4c): undefined reference to `boost::program_options::error_with_option_name::error_with_option_name(std::string const&, std::string const&, std::string const&, int)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<std::string, char>::xparse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&) const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE[_ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE]+0x2c): undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, std::string*, int)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<bool, char>::xparse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&) const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueIbcE6xparseERNS_3anyERKSt6vectorISsSaISsEE[_ZNK5boost15program_options11typed_valueIbcE6xparseERNS_3anyERKSt6vectorISsSaISsEE]+0x2c): undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool*, int)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::pair<std::string, std::string>, std::string const&>)':
lmplz_main.cc:(.text._ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairISsSsERKSsEE[_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairISsSsERKSsEE]+0x56): undefined reference to `boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::string, std::string>, std::string const&>)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)':
lmplz_main.cc:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x168): undefined reference to `boost::program_options::to_internal(std::string const&)'
lmplz_main.cc:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x1ec): undefined reference to `boost::program_options::detail::cmdline::cmdline(std::vector<std::string, std::allocator<std::string> > const&)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<std::vector<std::string, std::allocator<std::string> >, char>::name() const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueISt6vectorISsSaISsEEcE4nameEv[_ZNK5boost15program_options11typed_valueISt6vectorISsSaISsEEcE4nameEv]+0x2f): undefined reference to `boost::program_options::arg'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<unsigned int, char>::name() const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueIjcE4nameEv[_ZNK5boost15program_options11typed_valueIjcE4nameEv]+0x2f): undefined reference to `boost::program_options::arg'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<std::string, char>::name() const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0x2f): undefined reference to `boost::program_options::arg'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<bool, char>::name() const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueIbcE4nameEv[_ZNK5boost15program_options11typed_valueIbcE4nameEv]+0x2f): undefined reference to `boost::program_options::arg'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `boost::program_options::typed_value<unsigned long, char>::name() const':
lmplz_main.cc:(.text._ZNK5boost15program_options11typed_valueImcE4nameEv[_ZNK5boost15program_options11typed_valueImcE4nameEv]+0x2f): undefined reference to `boost::program_options::arg'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `main':
lmplz_main.cc:(.text.startup+0x81): undefined reference to `boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)'
lmplz_main.cc:(.text.startup+0xa4a): undefined reference to `boost::program_options::abstract_variables_map::operator[](std::string const&) const'
lmplz_main.cc:(.text.startup+0xac5): undefined reference to `boost::program_options::abstract_variables_map::operator[](std::string const&) const'
lmplz_main.cc:(.text.startup+0x190a): undefined reference to `boost::program_options::abstract_variables_map::operator[](std::string const&) const'
lmplz_main.cc:(.text.startup+0x2638): undefined reference to `boost::program_options::abstract_variables_map::operator[](std::string const&) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `void boost::program_options::validate<std::string, char>(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<std::string, std::allocator<std::string> >*, int)':
lmplz_main.cc:(.text._ZN5boost15program_options8validateISscEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPS4_IT_SaISE_EEi[_ZN5boost15program_options8validateISscEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPS4_IT_SaISE_EEi]+0xe2): undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, std::string*, int)'
lmplz_main.cc:(.text._ZN5boost15program_options8validateISscEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPS4_IT_SaISE_EEi[_ZN5boost15program_options8validateISscEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPS4_IT_SaISE_EEi]+0x441): undefined reference to `boost::program_options::invalid_option_value::invalid_option_value(std::string const&)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `void boost::program_options::validate<unsigned long, char>(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, unsigned long*, long)':
lmplz_main.cc:(.text._ZN5boost15program_options8validateImcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[_ZN5boost15program_options8validateImcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l]+0x477): undefined reference to `boost::program_options::invalid_option_value::invalid_option_value(std::string const&)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o: In function `void boost::program_options::validate<unsigned int, char>(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, unsigned int*, long)':
lmplz_main.cc:(.text._ZN5boost15program_options8validateIjcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[_ZN5boost15program_options8validateIjcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l]+0x4d2): undefined reference to `boost::program_options::invalid_option_value::invalid_option_value(std::string const&)'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::string const&) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x38): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::string const&) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::string const&) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x38): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::string const&) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16validation_errorE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::string const&) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15program_options20invalid_option_valueE]+0x30): more undefined references to `boost::program_options::error_with_option_name::substitute_placeholders(std::string const&) const' follow
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options11typed_valueIbcEE[_ZTVN5boost15program_options11typed_valueIbcEE]+0x40): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options11typed_valueImcEE[_ZTVN5boost15program_options11typed_valueImcEE]+0x40): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options11typed_valueISscEE[_ZTVN5boost15program_options11typed_valueISscEE]+0x40): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options11typed_valueIjcEE[_ZTVN5boost15program_options11typed_valueIjcEE]+0x40): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
CMakeFiles/lmplz.dir/lmplz_main.cc.o:(.data.rel.ro._ZTVN5boost15program_options11typed_valueISt6vectorISsSaISsEEcEE[_ZTVN5boost15program_options11typed_valueISt6vectorISsSaISsEEcEE]+0x40): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
collect2: error: ld returned 1 exit status
lm/builder/CMakeFiles/lmplz.dir/build.make:106: recipe for target 'bin/lmplz' failed
make[3]: *** [bin/lmplz] Error 1
CMakeFiles/Makefile2:2150: recipe for target 'lm/builder/CMakeFiles/lmplz.dir/all' failed
make[2]: *** [lm/builder/CMakeFiles/lmplz.dir/all] Error 2
CMakeFiles/Makefile2:2162: recipe for target 'lm/builder/CMakeFiles/lmplz.dir/rule' failed
make[1]: *** [lm/builder/CMakeFiles/lmplz.dir/rule] Error 2
Makefile:890: recipe for target 'lmplz' failed
make: *** [lmplz] Error 2

I have boost installed from packages:

sudo apt-get install libboost-program-options1.63-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libboost-program-options1.63-dev is already the newest version (1.63.0+dfsg-1ubuntu3).
libboost-program-options1.63-dev set to manually installed.

I'm on g++ 5.5:

$ g++ --version
g++ (Ubuntu 5.5.0-1ubuntu2) 5.4.1 20171010
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

But I have also tried g++4.8.

ftyers commented 6 years ago

@JRMeyer looks like the problem is because of an ancient g++ version and library dependencies, try removing all traces of g++ 4/5 keeping only g++7 and try again.

kpu commented 6 years ago

Boost wants you to compile with the same version of g++ as the libraries were compiled with. Which may mean a newer g++ as @ftyers suggests.