| 1 |
********************************************************************** |
| 2 |
* INSTALL file for STLport 5.0 * |
| 3 |
* * |
| 4 |
********************************************************************** |
| 5 |
|
| 6 |
STLport is a full ANSI C++ Standard library. |
| 7 |
|
| 8 |
This distribution contains STLport sources only, no binaries. |
| 9 |
To use STLport iostreams, locale and complex numbers, you have to build STLport |
| 10 |
library from sources in "build/lib" directory and link your programs with it. |
| 11 |
|
| 12 |
Starting with 5.0 the 'wrapper' mode is not supported anymore. You cannot use native |
| 13 |
compiler iostreams implementation with STLport STL (see doc/FAQ for explanations). |
| 14 |
Now you have to choose between STLport iostreams or no iostreams. |
| 15 |
|
| 16 |
==== Unpacking and installing STLport ========== |
| 17 |
|
| 18 |
1) Unpack STLport archive to a directory accessible during compilation. |
| 19 |
NOTE: DO NOT overwrite header files coming with the compiler, even if you made |
| 20 |
a backup - this won't work! Most probably, you've already unpacked the archive before |
| 21 |
reading this file though ;) |
| 22 |
|
| 23 |
2) Make sure "stlport" directory of this distribution comes before compiler's one |
| 24 |
in your include paths when you compile the project. |
| 25 |
|
| 26 |
Note: for SunPro CC 5.0 and higher, there used to be special directory "stlport/SC5" |
| 27 |
this is now obsolete, please make sure you do not use it anymore. |
| 28 |
|
| 29 |
3) Make sure you do not rename this "stlport" subdirectory - |
| 30 |
that may result in compilation errors. |
| 31 |
|
| 32 |
NOTE: Your compiler should be recognized by STLport source code with no configuring. |
| 33 |
Please edit appropriate configuration header for your compiler |
| 34 |
directly if you have to make compiler-specific configuration changes |
| 35 |
(see stlport/config). |
| 36 |
|
| 37 |
|
| 38 |
4) Go to "build/lib" subdirectory. It contains various makefiles for different |
| 39 |
compilers and 'make' utilities (GNU Make and Microsoft's nmake supported). |
| 40 |
If you are not able to find makefile for your particular |
| 41 |
compiler, please use one that looks most similar to your make engine to |
| 42 |
create your own. |
| 43 |
|
| 44 |
Verify you can do command line compiles. IDE users may have to do something |
| 45 |
special, like add environment variables (for Microsoft) or install |
| 46 |
additional compiler components (for Metrowerks), before they can use their |
| 47 |
command line compilers (see doc/README.xxxx for additionnal inrformation). |
| 48 |
|
| 49 |
IMPORTANT: |
| 50 |
|
| 51 |
If you DO NOT plan to use STLport iostreams and/or locale implementation but just |
| 52 |
the STL, you do not have to build the library. |
| 53 |
|
| 54 |
If you have decided to disable STLport iostreams and locale using _STLP_NO_IOSTREAMS |
| 55 |
configuration macro in stlport/stl/config/user_config.h, you may stop reading here. |
| 56 |
|
| 57 |
|
| 58 |
==== Building STLport iostreams library ========== |
| 59 |
|
| 60 |
Below are step-by-step instructions to build STLport streams library. This is a general |
| 61 |
build process description, for a more detailed one check README files in the doc folder: |
| 62 |
|
| 63 |
5) Using appropriate makefile, do |
| 64 |
|
| 65 |
make -f <compiler name>.mak clean |
| 66 |
make -f <compiler name>.mak install |
| 67 |
|
| 68 |
to build the STLport libraries. Makefiles are set up to build several different |
| 69 |
flavors - debug/nondebug, static/dynamic versions. But not all flavors will be build |
| 70 |
by default. See build/lib/README and build/lib/README.options for other make tagets. |
| 71 |
|
| 72 |
Note: your "make" program may have different name, like "nmake" for Visual C++. |
| 73 |
|
| 74 |
Examples : |
| 75 |
1. If you are building STLport for just one compiler, you may do something like that |
| 76 |
(DOS syntax for Visual C++ below): |
| 77 |
nmake /fnmake-vc6.mak clean |
| 78 |
nmake /fnmake-vc6.mak install |
| 79 |
|
| 80 |
2. If you plan to build STLport with multiple compilers, use "make -f" : |
| 81 |
make -f gcc.mak clean install |
| 82 |
make -f sunpro.mak clean install |
| 83 |
|
| 84 |
|
| 85 |
Note: 'install' target work slightly different than usual - it installs libraries into |
| 86 |
<STLport root dir>/lib and bin catalog, NOT IN SYSTEM CATALOG. You can do the system |
| 87 |
install by just copying stlport and lib folder to the destination of your choise. For |
| 88 |
example on UNIX-like platforms this can be done with the following commands: |
| 89 |
|
| 90 |
su |
| 91 |
tar cf - stlport | (cd /usr/local/include; tar xf -) |
| 92 |
chmod -R a+r /usr/local/include/stlport |
| 93 |
chown -R root:root /usr/local/include/stlport |
| 94 |
(cd lib; tar cf - --exclude=CVS --exclude=.cvsignore .) | (cd /usr/local/lib; tar xf -) |
| 95 |
chown -R root:root /usr/local/lib/libstlport* |
| 96 |
exit |
| 97 |
|
| 98 |
Note: System install is optional, most of compilers/linkers support searching for includes |
| 99 |
and libs throught out the whole filesystem, just check your documentation on how to achieve |
| 100 |
this. |
| 101 |
|
| 102 |
If you use cross-compiler, you can find libraries in the <STLport root dir>/lib/<target platform> |
| 103 |
catalog. |
| 104 |
|
| 105 |
6) If build fails, you may choose to : |
| 106 |
- try fixing the build ;) |
| 107 |
- wait until somebody else will submit corresponding changes to be incorporated in next STLport |
| 108 |
release/snapshot. |
| 109 |
|
| 110 |
In case you do patch STLport, please submit your patches to |
| 111 |
https://sourceforge.net/tracker/?atid=766246&group_id=146814&func=browse |
| 112 |
|
| 113 |
==== Linking your application with STLport library ========== |
| 114 |
|
| 115 |
7) Check the build: |
| 116 |
|
| 117 |
Example: |
| 118 |
|
| 119 |
- under Linux and other Unixes: |
| 120 |
|
| 121 |
cd build/test/unit |
| 122 |
make -f <compiler name>.mak install |
| 123 |
../../../bin/stl_unit_test |
| 124 |
../../../bin-g/stl_unit_test |
| 125 |
|
| 126 |
- under Windows: |
| 127 |
|
| 128 |
cd build\test\unit |
| 129 |
nmake /fnmake-<compiler name>.mak install |
| 130 |
cd ..\..\..\bin |
| 131 |
stl_unit_test_r50 |
| 132 |
stl_unit_test_d50 |
| 133 |
stl_unit_test_stld50 |
| 134 |
|
| 135 |
8) Supply the "lib" subdirectory to the library search path and add desired |
| 136 |
library to the list of libraries to link with. |
| 137 |
Examples (imagine you have mytest.cpp in the same directory as this file is): |
| 138 |
With GCC : g++ -pthread -I./stlport mytest.cpp -L./lib/ -lstlport |
| 139 |
With DEC CC : cxx -I./stlport mytest.cpp -L./lib/ -lstlport |
| 140 |
With SUN CC : CC -mt -I./stlport mytest.cpp -L./lib/ -lstlport |
| 141 |
..... |
| 142 |
[ Visual C++ specific ] For (embedded) VC++, you do not have to specify |
| 143 |
"stlport_XXX.lib" explicitly, as it is being choosen and forced to link |
| 144 |
automatically by "#pragma"'s in compiler config file in |
| 145 |
stlport/config/stl_msvc.h. Appropriate version is being selected based on |
| 146 |
/MD[d] vs /MT[d] options and _STLP_DEBUG setting. All you have to do is |
| 147 |
to set library search path for the linker. |
| 148 |
Example : |
| 149 |
cl.exe /I.\stlport mytest.cpp /link /libpath:.\lib /MD |
| 150 |
|
| 151 |
9) If you linked your application with shared STLport library (.so or .dll), please |
| 152 |
make your .so or .dll can be found by the dynamic linker. |
| 153 |
Under Windows, the paths searched depend on the particular flavor, see the MSDN |
| 154 |
documentation for LoadLibrary at http://msdn.microsoft.com. Easiest ways are to |
| 155 |
either modify the PATH environment variable or copy all .dll's next to the |
| 156 |
executable. |
| 157 |
Under Linux, the environment variable LD_LIBRARY_PATH can be adjusted to point |
| 158 |
to the dir containing. See the manpage for ld.so for more info. |
| 159 |
|
| 160 |
10) STLport builds only multithreaded libraries, so your application should be compiled |
| 161 |
as multithreaded, too. Use -pthread (or -pthreads on Solaris) option for GCC, -mt for SunPro, |
| 162 |
/MT for VC, and so on. Sometimes you should define _REENTRANT or something else, depends |
| 163 |
upon platform/compiler. See compiler's and linker's options on command line when you build |
| 164 |
unit tests (build/test/unit) for reference. The last is useful for ANY platform (special |
| 165 |
attention for Windows users). |
| 166 |
|
| 167 |
11) Don't hesitate to read READMEs (doc/README*, build/lib/README*, build/test/unit/README*) |
| 168 |
and doc/FAQ. |
| 169 |
|
| 170 |
12) Have fun! |