[C++-sig] How to compile Boost.Python for 32bit on 64bit Linux

Charles Solar charlessolar at gmail.com
Tue Oct 5 16:02:33 CEST 2010


You need to compile boost python with a 32 bit version of python.  The
version bjam is finding is 64 bit.  If you have a 32 bit python
somewhere you need to tell bjam where to find the right headers.  See
this page http://www.boost.org/doc/libs/1_44_0/libs/python/doc/building.html#configuring-boost-build

More than likely you are going to have to compile your own 32 bit
version of python because the packages for your system are all going
to be 64 bit, but it sounds like you may already have a 32 bit version
installed.

Also fyi, manually editing the python header file will not work.  You
may be able to compile but the machine's python will not be able to
load the binaries.

Charles

On Tue, Oct 5, 2010 at 8:41 AM, Philipp Münzel <mail at philippmuenzel.de> wrote:
> Hi everyone,
>
> I'm trying to build a Boost.Python 32bit static library on a 64bit Linux
> (Suse 11.3).
>
> Of course, I have the respective python-devel and python32 packages for
> my platform installed.
>
> I build my minimal work environment of boost-thread, -system and -python
> with this command:
>
> sudo ./bjam install -q --layout=system --with-system --with-thread
> --with-python toolset=gcc variant=release link=static threading=multi
> runtime-link=static address-model=32
>
> As long as I don't include the --with-python option, I get the expected
> result:  32bit static libraries.
>
> But with --with-python, I get the following error:
>
> gcc.compile.c++
> bin.v2/libs/python/build/gcc-4.5/release/address-model-32/link-static/runtime-link-static/threading-multi/numeric.o
> In file included from /usr/include/python2.6/Python.h:58:0,
>                 from ./boost/python/detail/wrap_python.hpp:142,
>                 from ./boost/python/detail/prefix.hpp:13,
>                 from ./boost/python/numeric.hpp:8,
>                 from libs/python/src/numeric.cpp:6:
> /usr/include/python2.6/pyport.h:685:2: error: #error "LONG_BIT
> definition appears wrong for platform (bad gcc/glibc config?)."
>
>    "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
> -pthread -m32  -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE
> -DBOOST_PYTHON_STATIC_LIB -DNDEBUG  -I"." -I"/usr/include/python2.6" -c
> -o
> "bin.v2/libs/python/build/gcc-4.5/release/address-model-32/link-static/runtime-link-static/threading-multi/numeric.o"
> "libs/python/src/numeric.cpp"
>
> ...failed gcc.compile.c++
> bin.v2/libs/python/build/gcc-4.5/release/address-model-32/link-static/runtime-link-static/threading-multi/numeric.o...
> ...failed updating 1 target...
>
> Apparently, my python headers in /usr/include/python2.6 make the
> assumption that on a 64bit platform one wants to build always 64bit
> libraries.
>
> How can I compile boost.python for 32bit without having to edit the
> respective header file and hard-coding the word size, which would render
> it unusable for a native build?
>
> Any help is appreciated.
>
> Regards,
> Philipp
>
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig at python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
>


More information about the Cplusplus-sig mailing list