Boost logo

Boost-Build :

Subject: Re: [Boost-build] Cross compiling to 64 bit on 32 bit host
From: Vladimir Prus (ghost_at_[hidden])
Date: 2011-03-18 13:26:53


On Friday, March 18, 2011 18:38:40 Bo Jensen wrote:
> On Fri, Mar 18, 2011 at 2:54 PM, Vladimir Prus <ghost_at_[hidden]> wrote:
> > On Friday, March 18, 2011 17:35:32 Bo Jensen wrote:
> >> I am trying to build my 64 bit libraries on a 32 bit host and almost
> >> got it right. I can build correctly with gcc when adding -m64 on the
> >> commandline, so the libraries are all there. But when I build using
> >> boost build, the I get the following error :
> >>
> >> /usr/bin/ld:
> >> /home/bj/sulum/external/boost/bin.v2/libs/thread/build/gcc-4.4.1/release
> >> /a
> >> ddress-model-64/link-static/threading-multi/libboost_thread.a(thread.o)
> >> : relocation R_X86_64_32 against `tls_destructor' can not be used when
> >> making a shared object; recompile with -fPIC
> >> /home/bj/sulum/external/boost/bin.v2/libs/thread/build/gcc-4.4.1/release
> >> /ad dress-model-64/link-static/threading-multi/libboost_thread.a: could
> >> not read symbols: Bad value
> >> collect2: ld returned 1 exit status
> >>
> >> I don't think it has any thing to do with thread library, I am missing
> >> something.
> >>
> >> But all files are being compiled with -fPIC, so I am a bit stuck, any
> >> pointers appreciated ?
> >
> > That's a well known issue -- dynamic executable for 64 bit x86 cannot use
> > non-fPIC code at all, and therefore using static libraries in such build
> > results in the error you see.
>
> Vladimir, thanks for the reply, much appreciated.
>
> Hmm maybe a dumb question, but how do I then build my library
> including boost libs into one shared library ? Right now I build a
> bunch of static libs and included them into a shared library, from
> what you say this is not possible on 64 bit.

Bo,

you have two options, basically:

- You shared libraries, which is really the best approach
- Clean your entire Boost tree (e.g. remove bin.v2), and then do:

        bjam link=static cxxflags=-fPIC

HTH,

-- 
Vladimir Prus
http://vladimir_prus.blogspot.com
Boost.Build: http://boost.org/boost-build2

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk