It works, thank you !

On Tuesday 11 January 2011 20:46:04 Kenneth Heafield wrote:
> I've just checked in revision 3796 which fixes this problem, including
> the OnDiskWrapper issue for bonus kicks.
> 
> Tested with: ./configure, ./configure --without-kenlm, ./configure
> --enable-shared, and ./configure --enable-shared --without-kenlm .
> 
> I would have just added -lkenlm to LIBS in configure.ac but then it
> tries to link -lkenlm when building the library itself :-(.  So now
> every binary has @KENLM_LDFLAGS@ in Makefile.am.  This could be renamed
> and subsume "-L$(top_srcdir)/OnDiskPt/src -lOnDiskPt" since libmoses
> depends on that too.  There's probably a more elegant solution but
> libtool/autoconf/automake/autodefectivekitchensink terrify me; I'm a
> Boost.Build user.
> 
> On 01/11/11 09:41, Sylvain Raybaud wrote:
> > Hi! thank you for the answer. It seems there is a problem when building
> > moses using --enable-shared. See:
> > 
> > #with --enable-shared and --with-kenlm:
> > sylv...@markov ~/tmp $ svn co
> > https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder
> > mosesdecoder- kenlm
> > [...]
> > sylv...@markov ~/tmp $ cp -r mosesdecoder-kenlm/ mosesdecoder-noknelm
> > sylv...@markov ~/tmp $ cd mosesdecoder-kenlm/trunk
> > sylv...@markov ~/tmp/mosesdecoder-kenlm/trunk $ ./regenerate-makefiles.sh
> > [...]
> > sylv...@markov ~/tmp/mosesdecoder-kenlm/trunk $ ./configure --with-
> > srilm=${HOME}/loria/srilm --enable-shared --with-kenlm && make
> > [...]
> > /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../x86_64-pc-linux-gnu/bi
> > n/ld: cannot find -lkenlm
> > collect2: ld returned 1 exit status
> > make[3]: *** [libmoses.la] Error 1
> > make[3]: Leaving directory `/home/sylvain/tmp/mosesdecoder-
> > kenlm/trunk/moses/src'
> > make[2]: *** [all] Error 2
> > make[2]: Leaving directory `/home/sylvain/tmp/mosesdecoder-
> > kenlm/trunk/moses/src'
> > make[1]: *** [all-recursive] Error 1
> > make[1]: Leaving directory `/home/sylvain/tmp/mosesdecoder-kenlm/trunk'
> > make: *** [all] Error 2
> > sylv...@markov ~/tmp/mosesdecoder-kenlm/trunk $ echo $?
> > 2
> > 
> > 
> > 
> > 
> > #with --enable-shared and --without-kenlm:
> > sylv...@markov ~/tmp/mosesdecoder-kenlm/trunk $ cd ~/tmp/mosesdecoder-
> > nokenlm/trunk/
> > sylv...@markov ~/tmp/mosesdecoder-nokenlm/trunk $
> > ./regenerate-makefiles.sh [...]
> > sylv...@markov ~/tmp/mosesdecoder-nokenlm/trunk $ ./configure --with-
> > srilm=${HOME}/loria/srilm/ --enable-shared --without-kenlm && make
> > [...]
> > 
> > /bin/sh ../../libtool --tag=CXX   --mode=link g++  -g -O2  -
> > L/home/sylvain/loria/srilm//lib/x86_64-gcc4 -
> > L/home/sylvain/loria/srilm//flm/obj/x86_64-gcc4 -o checkplf checkplf.o
> > ../../moses/src/libmoses.la -loolm  -loolm -ldstruct -lmisc -lflm -lz
> > libtool: link: g++ -g -O2 -o .libs/checkplf checkplf.o  -
> > L/home/sylvain/loria/srilm//lib/x86_64-gcc4 -
> > L/home/sylvain/loria/srilm//flm/obj/x86_64-gcc4
> > ../../moses/src/.libs/libmoses.so -loolm -ldstruct -lmisc -lflm -lz
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::Word::~Word()'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::PhraseNode::GetTargetPhraseCollection(unsigned long,
> > OnDiskPt::OnDiskWrapper&) const'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::PhraseNode::GetChild(OnDiskPt::Word const&,
> > OnDiskPt::OnDiskWrapper&) const'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::OnDiskWrapper::GetMisc(std::basic_string<char,
> > std::char_traits<char>, std::allocator<char> > const&) const'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::PhraseNode::GetCount(unsigned long) const'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::OnDiskWrapper::~OnDiskWrapper()'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::PhraseNode::~PhraseNode()'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::TargetPhraseCollection::~TargetPhraseCollection()'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::OnDiskWrapper::GetRootSourceNode()'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::OnDiskWrapper::ConvertFromMoses(Moses::FactorDirection,
> > std::vector<unsigned long, std::allocator<unsigned long> > const&,
> > Moses::Word const&) const'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::TargetPhraseCollection::ConvertToMoses(std::vector<unsigned
> > long, std::allocator<unsigned long> > const&, std::vector<unsigned long,
> > std::allocator<unsigned long> > const&, Moses::PhraseDictionary const&,
> > std::vector<float, std::allocator<float> > const&,
> > Moses::WordPenaltyProducer const*, Moses::LMList const&,
> > std::basic_string<char, std::char_traits<char>, std::allocator<char> >
> > const&, OnDiskPt::Vocab&) const'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::OnDiskWrapper::BeginLoad(std::basic_string<char,
> > std::char_traits<char>, std::allocator<char> > const&)'
> > ../../moses/src/.libs/libmoses.so: undefined reference to
> > `OnDiskPt::OnDiskWrapper::OnDiskWrapper()'
> > collect2: ld returned 1 exit status
> > make[2]: *** [checkplf] Error 1
> > make[2]: Leaving directory `/home/sylvain/tmp/mosesdecoder-
> > nokenlm/trunk/moses-cmd/src'
> > make[1]: *** [all-recursive] Error 1
> > make[1]: Leaving directory `/home/sylvain/tmp/mosesdecoder-nokenlm/trunk'
> > make: *** [all] Error 2
> > 
> > 
> > 
> > 
> > #on the other hand, without shared libraries:
> > sylv...@markov ~/loria/mosesdecoder/trunk $ ./configure --with-
> > srilm=${PWD}/../../srilm/ --with-kenlm
> > [...]
> > sylv...@markov ~/loria/mosesdecoder/trunk $ nice make -j4
> > [...]
> > sylv...@markov ~/loria/mosesdecoder/trunk $ echo $?
> > 0
> > 
> > 
> > regards,
> > 
> > On Tuesday 11 January 2011 14:13:17 Barry Haddow wrote:
> >> Hi Sylvain
> >> 
> >> There's an --enable-shared option to configure which should switch on
> >> the building of shared libraries.
> >> 
> >> The way that branches work in svn is that the entire trunk is
> >> (effectively) copied into the branch directory. See (eg) here
> >> http://svnbook.red-bean.com/en/1.1/ch04.html
> >> 
> >> Once you're added as a moses developer, if you create a branch then it
> >> doesn't really matter what you do there as it doesn't affect others. If
> >> you have useful contributions to trunk, then we're happy to have them,
> >> but we'd need to be careful to keep the trunk as stable as possible.
> >> 
> >> best regards - Barry
> >> 
> >> On Tuesday 11 January 2011 09:59, Sylvain Raybaud wrote:
> >>> Hello
> >>> 
> >>>   I would like to use moses as a library in a piece of software. It
> >>>   check
> >>> 
> >>> out, compiled and browsed through the source tree, and it seems that no
> >>> shared library is built. I would like to create one (maybe more changes
> >>> will be made later). It seems that some contributions are included in
> >>> the repository under the "branches" directory. What are the conditions
> >>> to check in some work here ? should the entire source tree be copied
> >>> here, or just the files I want to change ? thank you
> >>> 
> >>> best regards,
> 
> _______________________________________________
> Moses-support mailing list
> Moses-support@mit.edu
> http://mailman.mit.edu/mailman/listinfo/moses-support

-- 
Sylvain Raybaud
_______________________________________________
Moses-support mailing list
Moses-support@mit.edu
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to