Ceci est une ancienne révision du document !
Compilation
Sun Studio 12
archive boost_1_34_1 dans /local/apps/src
en s'inspirant de cette page:
> module load ss12 > setenv PATH ${PATH}:/usr/ccs/bin (à cause de ld) > setenv BOOST_JAM_TOOLSET_ROOT /opt/studio12/SUNWspro/ > cd tools/jam/src/ > ./build.sh sunpro | & tee BUILD.LOG
Pas sur qu'il faille faire la ligne suivante?:
ln -s bin.solaris bin # to run regression tests later
Pour avoir bjam dans le PATH:
> setenv PATH /local/apps/src/boost_1_34_1/tools/jam/src/bin.solaris:${PATH} > bjam -sTOOLS=sunpro -j2 -d2 stage|& tee BJAM.LOG Building Boost.Regex with the optional Unicode/ICU support disabled. Please refer to the Boost.Regex documentation for more information (don't panic: this is a strictly optional feature). ### ### No toolset specified. Please use --toolset option. ### ### Known toolsets are: acc, borland, cc, como, darwin, gcc, gcc-nocygwin, intel-linux, intel-win32, kcc, kylix, metrowerks, mingw, mipspro, msvc, qcc, sunpro, tru64cxx, vacpp, vc7, vc8, vmsdecc ###
il y a donc des options qui ont changées… voir
bjam --toolset=sun stdlib=sun-stlport -j2 -d2 stage | & tee BJAM.LOG
environ 2 heures de compil!
Tests
avec l'exemple donné sur le site de boost:
nemo-henry% CC -I /local/apps/src/boost_1_34_1 example2.cpp -o example2 -library=stlport4 -R /local/apps/src/boost_1_34_1/stage/lib -L /local/apps/src/boost_1_34_1/stage/lib -lboost_regex-sw-mt-d
Ne pas oublier -library=stlport4
puis:
nemo-henry% ldd example2 libboost_regex-sw-mt-d-1_34_1.so.1.34.1 => /local/apps/src/boost_1_34_1/stage/lib/libboost_regex-sw-mt-d-1_34_1.so.1.34.1 libstlport.so.1 => /opt/studio12/SUNWspro/lib/stlport4/libstlport.so.1 librt.so.1 => /lib/librt.so.1 libCrun.so.1 => /usr/lib/libCrun.so.1 libm.so.2 => /lib/libm.so.2 libc.so.1 => /lib/libc.so.1 libm.so.1 => /lib/libm.so.1 libaio.so.1 => /lib/libaio.so.1 libmd.so.1 => /lib/libmd.so.1 nemo-henry% ./example2 < jayne.txt Will Success Spoil Rock Hunter?
Gcc
- il faut python > 2.3, donc mettre /usr/bin avant /usr/sfw/bin dans le PATH
- il faut utiliser le linker gnu et pas celui de Sun boost install with python et Building Boost with ASIO:
> pwd /local/apps/src/gnu/boost_1_34_1 > setenv PATH /usr/bin:/usr/sfw/bin:/opt/csw/gnu:/usr/local/wrapper/bin:. > ./configure --prefix=/local/apps/gnu/32/boost_1_34_1 > vi user-config.jam > make install | & tee INSTALL.LOG
Ensuite, on teste l'exemple:
nemo-henry% g++ -I/local/apps/gnu/32/boost_1_34_1/include/boost-1_34_1 example2.cpp -g -o example2 /local/apps/gnu/32/boost_1_34_1/lib/libboost_regex-gcc34-mt-d-1_34_1.a nemo-henry% ./example2 < jayne.txt Will Success Spoil Rock Hunter?
Dans le INSTALL.LOG, on voit que certaines cibles ne sont pas compilées:
...failed updating 176 targets... ...skipped 32 targets... ...updated 5600 targets... Not all Boost libraries built properly.
par exemple:
gcc.compile.c++ bin.v2/libs/python/build/gcc-3.4.3/debug/threading-multi/numeric .o In file included from ./boost/python/object/make_instance.hpp:9, from ./boost/python/object/make_ptr_instance.hpp:8, from ./boost/python/to_python_indirect.hpp:11, from ./boost/python/converter/arg_to_python.hpp:10, from ./boost/python/call.hpp:15, from ./boost/python/object_core.hpp:12, from ./boost/python/object.hpp:9, from ./boost/python/tuple.hpp:10, from ./boost/python/numeric.hpp:10, from libs/python/src/numeric.cpp:6: ./boost/python/object/instance.hpp:44: error: a casts to a type other than an integral or enumeration type cannot appear in a constant-expression ./boost/python/object/instance.hpp:44: error: '->' cannot appear in a constant-expression ./boost/python/object/instance.hpp:44: error: `&' cannot appear in a constant-expression
le problème vient de python, ou de la version du compilateur?