- Žádné nadcházející události
Hratky s STDCXX (C++ STL knihovna)
Dlouho jsem slýchával pochvalné poznámky o apachske C++ STD knihovně (puvodne RogueWave) od kolegu portující KDE na OpenSolaris.
Vždy jsem si říkal, ze bych si měl najít čas a vyzkoušet si ji osobně ... kupodivu jsem si nakonec volny čas našel ;-)
Tady jsou mé zkušenosti:
1) Instalace
Nechtěl jsem si installovat cely balíček programů KDE a tak jsem sáhl po SFE.
$pkgtool --download build SFEstdcxx.spec
Všem co se točí kolem pkgbuildu doporučuji si prohlídnout soubor SFEstdcxx.spec, neb je multi-arch (kompiluje jak 64-bit tak 32-bit)
a hlavně používá 2 kompilatory (gcc a sunCC).
Takže pokud máte 64-bitovou mašinu, tak se zdrojáky zkompiluji 4-krát (32-gcc, 64-gcc, 32-suncc, 64-suncc). ;-)
gcc verze se nainstaluje do /usr/gnu/stdcxx
a suncc verze do /usr/stdcxx
2) Kompilace s stdcxx
Stačí přidat následující volby kompilátoru:
CXXFLAGS="-library=%none -staticlib=%none -L/usr/stdcxx/lib -R/usr/stdcxx/lib -I/usr/stdcxx/include -lstd -lm"
LDFLAGS="-library=%none -staticlib=%none -L/usr/stdcxx/lib -R/usr/stdcxx/lib"
-R říká linkeru, kde má hledat knihovny pro výslednou binárku, jinak by se musela exportovat LD_LIBRARY_PATH
Dlouho jsem nevěděl jaký projekt zkusím zkompilovat s stdcxx, ale pak jsem si řekl, že když už tak něco zabijáckýho => ano, Boost!
Vzal jsem posledni verzi boostu 1.40.0 a vysledek je SFEboost-stdcxx.spec.
Jen jeden patch (fixthread.diff) jsem musel přidat a to kvůli suncc, ktery nepodporuje r-value reference, takže stdcxx má jedničku. ;-)

