Thanks Kenneth and Tom, for the updates and confirmation.

I think I've missed something in these threads. I pulled from Git and did
the following:

1. ./bjam --without-libsegfault

2. ldd `which moses` to determine which libs are dynamically linked

Output:

ldd `which moses`****

        linux-vdso.so.1 =>  (0x00007fff57f97000)****

        libz.so.1 => /lib64/libz.so.1 (0x000000356f400000)****

        libboost_system-mt.so.5 => /usr/lib64/libboost_system-mt.so.5
(0x0000003581800000)****

        libboost_thread-mt.so.5 => /usr/lib64/libboost_thread-mt.so.5
(0x00007fbae6510000)****

        libSegFault.so => /lib64/libSegFault.so (0x00007fbae630b000)****

        librt.so.1 => /lib64/librt.so.1 (0x000000356f800000)****

        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000357a800000)****

        libm.so.6 => /lib64/libm.so.6 (0x000000356e800000)****

        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003578800000)****

        libpthread.so.0 => /lib64/libpthread.so.0 (0x000000356f000000)****

        libc.so.6 => /lib64/libc.so.6 (0x000000356e400000)****

        /lib64/ld-linux-x86-64.so.2 (0x000000356e000000)


libSegFault shows up here still.

3. ./bjam --static

4. I still get errors "Could not statically link against lib
boost_program_options." and "... for lib z". To confirm, running ./bjam
--debug-configuration gives me exit status 1 for:

a) -lboost_program_options
b) -lSegFault
c) -lz

I tried re-building boost (1.5.0) statically:

sudo ./b2 --prefix=/usr/local --libdir=/usr/local/lib64 --layout=tagged
link-static,shared threading=multi install

But it seems to still be building dynamically.

And why would libSegFault still show up after I've used the
--without-libsegfault option? I am probably missing something really basic,
so any help would be appreciated.

Thanks,

Sumita Sami


On Mon, Aug 6, 2012 at 12:10 PM, Tom Hoar <
tah...@precisiontranslationtools.com> wrote:

>  Just confirmed the update:
>
>
>  bjam --without-libsegfault
>  tahoar@library1:~$ ldd `which moses`
>         linux-vdso.so.1 =>  (0x00007fff0d7ff000)
>         librt.so.1 => /lib/librt.so.1 (0x00007f43de730000)
>         libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f43de41c000)
>         libm.so.6 => /lib/libm.so.6 (0x00007f43de198000)
>         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f43ddf81000)
>         libpthread.so.0 => /lib/libpthread.so.0 (0x00007f43ddd64000)
>         libc.so.6 => /lib/libc.so.6 (0x00007f43dd9e0000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007f43de95c000)
>
>  bjam --static
>  tahoar@library1:~$ ldd `which moses`
>         not a dynamic executable
>
>  Thanks
>
>
>  On Mon, 06 Aug 2012 12:39:42 -0400, Kenneth Heafield
>  <mo...@kheafield.com> wrote:
> > Ok, committed.  Here's how the build system now behaves:
> >
> > link=shared: Everything linked dynamically.
> >
> > Default: internal libraries are statically linked.  Boost and zlib
> > statically linked if possible.  libSegFault dynamically linked.
> > Dynamically linked executable.
> >
> > --without-libsegfault: Same as default but no libSegFault.  Still a
> > dynamically linked executable, even if you have static boost and
> > zlib.
> > It's complicated to do detect then be automatic.
> >
> > --static: No libSegFault.  Print warning messages if you're missing
> > static libraries, but keep building anyway.  Static executable.
> >
> > Kenneth
> >
> > On 08/06/2012 12:00 PM, Kenneth Heafield wrote:
> >> D'oh, it's a feature, not a bug.  Add runtime-link=static and you'll
> >> get
> >> a fully-static executable.
> >>
> >> Plan to add this to the Moses build system.  Testing now.
> >>
> >> Kenneth
> >>
> >> On 08/06/2012 11:31 AM, Tom Hoar wrote:
> >>> FYI, this build is on U-10.04.4 using the bjam shipped with Moses.
> >>> I can
> >>> send you the complete log if it helps. Let me know if you need
> >>> anything
> >>> else.
> >>>
> >>> Tom
> >>>
> >>>
> >>> On Mon, 06 Aug 2012 11:27:27 -0400, Kenneth Heafield
> >>> <mo...@kheafield.com>  wrote:
> >>>> Hi,
> >>>>
> >>>> There appears to be a bug in boost-build that prevents it from
> >>>> making
> >>>> fully-static binaries with g++. This might take a while to sort
> >>>> out.
> >>>>
> >>>> Kenneth
> >>>>
> >>>> On 08/06/2012 10:48 AM, Tom Hoar wrote:
> >>>>> Thanks, Ken. I think this is easier than adding another option to
> >>>>> Moses
> >>>>> if we can understand the output. The ldd manpage says "ldd prints
> >>>>> the
> >>>>> shared libraries required by each program or shared library
> >>>>> specified on
> >>>>> the command line." I assume "shared libraries" means not
> >>>>> statically
> >>>>> linked?
> >>>>>
> >>>>> Here's the output on the moses I just built with today's github
> >>>>> updates.
> >>>>> The log output reported exit code 0 for all lines with "g++
> >>>>> -static".
> >>>>>
> >>>>> tahoar@library1:~$ ldd `which moses`
> >>>>> linux-vdso.so.1 =>  (0x00007fffa2954000)
> >>>>> librt.so.1 =>  /lib/librt.so.1 (0x00007f818aa7b000)
> >>>>> libstdc++.so.6 =>  /usr/lib/libstdc++.so.6 (0x00007f818a767000)
> >>>>> libm.so.6 =>  /lib/libm.so.6 (0x00007f818a4e3000)
> >>>>> libgcc_s.so.1 =>  /lib/libgcc_s.so.1 (0x00007f818a2cc000)
> >>>>> libpthread.so.0 =>  /lib/libpthread.so.0 (0x00007f818a0af000)
> >>>>> libc.so.6 =>  /lib/libc.so.6 (0x00007f8189d2b000)
> >>>>> /lib64/ld-linux-x86-64.so.2 (0x00007f818aca7000)
> >>>>>
> >>>>> Is this what I should expect if all of the libboost libraries are
> >>>>> statically linked? I think so because there are no references to
> >>>>> the
> >>>>> lboost_* or lz libraries in the log file.
> >>>>>
> >>>>> Tom
> >>>>>
> >>>>>
> >>>>> On Mon, 06 Aug 2012 10:14:35 -0400, Kenneth Heafield
> >>>>> <mo...@kheafield.com>  wrote:
> >>>>>> On linux,
> >>>>>>
> >>>>>> ldd bin/moses
> >>>>>>
> >>>>>> On 08/06/2012 10:03 AM, Tom Hoar wrote:
> >>>>>>> Thanks Ken. I downloaded/compiled with the latest changes up to
> >>>>>>> BOOST_CHECK_CLOSE. The exit code 1 disappeared and everything
> >>>>>>> seems
> >>>>>>> okay.
> >>>>>>>
> >>>>>>> One more question. Other than the log output at compile time,
> >>>>>>> is there
> >>>>>>> any way to query the Moses binary to see which libraries are
> >>>>>>> statically
> >>>>>>> vs dynamically linked?
> >>>>>>>
> >>>>>>> For example, a while back, someone on the list gave this
> >>>>>>> command to
> >>>>>>> test
> >>>>>>> if the binary was compiled --with-srilm, and there are others
> >>>>>>> for
> >>>>>>> IRSTLM, RANDLM and KENLM.
> >>>>>>>
> >>>>>>> nm -C "/path/to/moses" | grep "vtable for
> >>>>>>> Moses::LanguageModelSRI"`
> >>>>>>>
> >>>>>>> I tried the obvious two grep searches "static" and "dynamic"
> >>>>>>> (below),
> >>>>>>> but they don't seem to relate to the libraries. Does anyone
> >>>>>>> know a way
> >>>>>>> to find/test if libraries are dynamically or statically linked?
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Tom
> >>>>>>>
> >>>>>>>
> >>>>>>> tahoar@library1:~/domy-2.5$ nm -C `which moses` | grep "static"
> >>>>>>> 00000000005ddbc0 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005de7c1 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005ded37 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005e0067 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005e2fc6 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005ecae3 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005ef140 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005f475f t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005f4cd9 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005f5e53 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005f6f8e t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 00000000005f7183 t
> >>>>>>> __static_initialization_and_destruction_0(int, int)
> >>>>>>> 0000000000883cc0 d static_bl_desc
> >>>>>>> 0000000000883ca0 d static_d_desc
> >>>>>>> 0000000000610680 r static_dtree
> >>>>>>> 0000000000883c80 d static_l_desc
> >>>>>>> 0000000000610200 r static_ltree
> >>>>>>>
> >>>>>>> tahoar@library1:~/domy-2.5$ nm -C `which moses` | grep
> >>>>>>> "dynamic"
> >>>>>>> 0000000000570c50 W
> >>>>>>> boost::unordered_detail::hash_table_unique_keys<std::pair<float
> >>>>>>> const,
> >>>>>>> boost::dynamic_bitset<unsigned long, std::allocator<unsigned
> >>>>>>> long>
> >>>>>>>>> ,
> >>>>>>> float, boost::hash<float>, std::equal_to<float>,
> >>>>>>> std::allocator<std::pair<float const,
> >>>>>>> boost::dynamic_bitset<unsigned
> >>>>>>> long, std::allocator<unsigned long>  >  >  >
> >>>>>>> >::operator[](float const&)
> >>>>>>> 000000000057baf0 W
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> boost::unordered_detail::hash_table_data_unique_keys<std::allocator<std::pair<std::pair<unsigned
> >>>>>>>
> >>>>>>>
> >>>>>>> char, unsigned char>  const, boost::dynamic_bitset<unsigned
> >>>>>>> long,
> >>>>>>> std::allocator<unsigned long>  >  >  >
> >>>>>>> >::~hash_table_data_unique_keys()
> >>>>>>> 0000000000570af0 W
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> boost::unordered_detail::hash_table_data_unique_keys<std::allocator<std::pair<float
> >>>>>>>
> >>>>>>>
> >>>>>>> const, boost::dynamic_bitset<unsigned long,
> >>>>>>> std::allocator<unsigned
> >>>>>>> long>  >  >  >  >::create_buckets()
> >>>>>>> 0000000000570c00 W
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> boost::unordered_detail::hash_table_data_unique_keys<std::allocator<std::pair<float
> >>>>>>>
> >>>>>>>
> >>>>>>> const, boost::dynamic_bitset<unsigned long,
> >>>>>>> std::allocator<unsigned
> >>>>>>> long>  >  >  >  >::node_constructor::~node_constructor()
> >>>>>>> 0000000000570b70 W
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> boost::unordered_detail::hash_table_data_unique_keys<std::allocator<std::pair<float
> >>>>>>>
> >>>>>>>
> >>>>>>> const, boost::dynamic_bitset<unsigned long,
> >>>>>>> std::allocator<unsigned
> >>>>>>> long>  >  >  >  >::~hash_table_data_unique_keys()
> >>>>>>> 000000000057ba60 W
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> boost::unordered_detail::hash_table_data_unique_keys<std::allocator<std::pair<unsigned
> >>>>>>>
> >>>>>>>
> >>>>>>> int const, boost::dynamic_bitset<unsigned long,
> >>>>>>> std::allocator<unsigned
> >>>>>>> long>  >  >  >  >::~hash_table_data_unique_keys()
> >>>>>>> U __dynamic_cast@@CXXABI_1.3
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Mon, 06 Aug 2012 08:20:00 -0400, Kenneth Heafield
> >>>>>>> <mo...@kheafield.com>  wrote:
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> You're correct. There doesn't seem to be a static version of
> >>>>>>>> this
> >>>>>>>> library. I've added the --nosegfault option (which isn't as
> >>>>>>>> cool as
> >>>>>>>> it sounds) to skip this library.
> >>>>>>>>
> >>>>>>>> Kenneth
> >>>>>>>>
> >>>>>>>> On 08/06/2012 02:08 AM, Tom Hoar wrote:
> >>>>>>>>> I read the comment "In order to obtain a fully static Moses,
> >>>>>>>>> every g++
> >>>>>>>>> command line that includes "-static" must pass with exit code
> >>>>>>>>> 0."
> >>>>>>>>> with
> >>>>>>>>> interest.
> >>>>>>>>>
> >>>>>>>>> When we compile moses, this log output line shows an exit
> >>>>>>>>> code 1.
> >>>>>>>>> All
> >>>>>>>>> the others are 0.
> >>>>>>>>>
> >>>>>>>>> bash -c "g++ -static -lSegFault -x c++ -<<<'int main() {}' -o
> >>>>>>>>> /dev/null
> >>>>>>>>>> /dev/null 2>/dev/null"
> >>>>>>>>> 1
> >>>>>>>>>
> >>>>>>>>> Any suggestions as to what's missing/how to correct so we
> >>>>>>>>> have a
> >>>>>>>>> fully-static Moses?
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> Tom
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Fri, 03 Aug 2012 18:13:47 -0400, Kenneth Heafield
> >>>>>>>>> <mo...@kheafield.com>  wrote:
> >>>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>> Moses attempts to link statically by default but falls back
> >>>>>>>>>> to
> >>>>>>>>>> dynamic
> >>>>>>>>>> links. You must have static versions of all the dependencies
> >>>>>>>>>> installed
> >>>>>>>>>> as well. Run
> >>>>>>>>>>
> >>>>>>>>>> bjam --debug-configuration
> >>>>>>>>>>
> >>>>>>>>>> and, near the top, it will show you some command lines
> >>>>>>>>>> followed by
> >>>>>>>>>> their
> >>>>>>>>>> exit code. In order to obtain a fully static Moses, every
> >>>>>>>>>> g++
> >>>>>>>>>> command
> >>>>>>>>>> line that includes "-static" must pass with exit code 0.
> >>>>>>>>>>
> >>>>>>>>>> Kenneth
> >>>>>>>
> >>>>>
> >>>
> >> _______________________________________________
> >> Moses-support mailing list
> >> Moses-support@mit.edu
> >> http://mailman.mit.edu/mailman/listinfo/moses-support
> > _______________________________________________
> > Moses-support mailing list
> > Moses-support@mit.edu
> > http://mailman.mit.edu/mailman/listinfo/moses-support
>
> _______________________________________________
> Moses-support mailing list
> Moses-support@mit.edu
> http://mailman.mit.edu/mailman/listinfo/moses-support
>
_______________________________________________
Moses-support mailing list
Moses-support@mit.edu
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to