Subject: Re: [Boost-build] Cross compiling to 64 bit on 32 bit host
From: Bo Jensen (jensen.bo_at_[hidden])
Date: 2011-03-18 11:38:40
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 :
>> relocation R_X86_64_32 against `tls_destructor' can not be used when
>> making a shared object; recompile with -fPIC
>> 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
>> 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.
> What is the exact command that produces the above error?
> Vladimir Prus
> Boost.Build: http://boost.org/boost-build2
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
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