********************************************************************** * INSTALL file for STLport 5.2 * * * ********************************************************************** STLport is a full ANSI C++ Standard library. This distribution contains STLport sources only, no binaries. To use STLport iostreams, locale and complex numbers, you have to build STLport library from sources and link your programs with it. Starting with 5.0 the 'wrapper' mode is not supported anymore. You cannot use native compiler iostreams implementation with STLport STL (see doc/FAQ for explanations). ==== Installing STLport ========== 0) DO NOT overwrite/move/rename header files coming with the compiler, even if you made a backup---STLport need this headers and don't override ones. 1) Run ./configure --help read options description; if you use compiler different from gcc, pay attention to --use-compiler-family= option. 2) Run ./configure <option> Options here more-or-less traditional. Note: ./configure give hints only for library build, it dosen't create/edit any headers, check you system etc. This is simple way to store custom options, not more. If you want to change default behaviour of STLport, see stlport/stl/config/user_config.h and stlport/stl/config/host.h; read the comments in this files! Not all combinations of options healthy, you should understand what you do. If not, keep all unchanged. Note: you can find all recognised 'settings' in the file build/Makefiles/gmake/config.mak This is generated file, but only ./configure will rewrite one. 3) Run make && make check Only GNU Make supported! Preferred verion of GNU Make >= 3.81; never use GNU Make before 3.79 --- build not work properly; GNU makes >= 3.79 and < 3.81 may fail to build library/tests properly, due to bugs; but the real results depends upon platform. 4) If build fine, become superuser and run make install Note: you can use --prefix= to change installation path (or macro DESTDIR, as usual), or even skip installation and use STLport in-place. ==== Usage STLport ========== 1) The best way to understand how to use it, is to see on compilation, linking, running unit tests, i.e. see on options when you do (cd build/test/unit; make check) 2) Make sure "stlport" directory of this distribution comes before compiler's one in your include paths (something like -I<base install path>/stlport); never rename 'stlport' part of path! Compilation: c++ -pthread -fexceptions -O2 -I/usr/local/include/stlport -c -o test.o test.cc In case of gcc, libstlport replace libstdc++ (not in all cases!) Link, variant 1: c++ -pthread -fexceptions -O2 -I/usr/local/include/stlport -nostdlib -o mytest \ /usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crt1.o \ /usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crti.o \ /usr/lib/gcc/i686-pc-linux-gnu/4.2.4/crtbegin.o \ test.o \ -lstlport \ -lgcc_s -lpthread -lc -lm \ /usr/lib/gcc/i686-pc-linux-gnu/4.2.4/crtend.o \ /usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crtn.o Of cause, names of start/stop files not hardcoded, you can locate it with c++ -print-file-name=crt1.o Link, variant 2: gcc -pthread -fexceptions -O2 -I/usr/local/include/stlport -o mytest \ test.o -lstlport If you use gcc before 3.3, you must link with libstdc++, because language-support library (libsupc++.a) don't contain necessary functions. 3) STLport builds only multithreaded libraries (by default), so your application should be compiled as multithreaded, too. Use -pthread (or -pthreads on Solaris) option for GCC, -mt for SunPro and so on. Sometimes you should define _REENTRANT or something else, depends upon platform/compiler. See compiler's and linker's options on command line when you build unit tests (build/test/unit) for reference. The last is useful for ANY platform (special attention for Windows users). 4) Don't hesitate to read READMEs (doc/README*, build/lib/README*, build/test/unit/README*) and doc/FAQ. 5) Have fun!