OLD | NEW |
1 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software | 1 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software |
2 Foundation, Inc. | 2 Foundation, Inc. |
3 | 3 |
4 This file is free documentation; the Free Software Foundation gives | 4 This file is free documentation; the Free Software Foundation gives |
5 unlimited permission to copy, distribute and modify it. | 5 unlimited permission to copy, distribute and modify it. |
6 | 6 |
7 | 7 |
8 Perftools-Specific Install Notes | 8 Perftools-Specific Install Notes |
9 ================================ | 9 ================================ |
10 | 10 |
11 *** NOTE FOR 64-BIT LINUX SYSTEMS | 11 *** NOTE FOR 64-BIT LINUX SYSTEMS |
12 | 12 |
13 The glibc built-in stack-unwinder on 64-bit systems has some problems | 13 The glibc built-in stack-unwinder on 64-bit systems has some problems |
14 with the perftools libraries. (In particular, the cpu/heap profiler | 14 with the perftools libraries. (In particular, the cpu/heap profiler |
15 may be in the middle of malloc, holding some malloc-related locks when | 15 may be in the middle of malloc, holding some malloc-related locks when |
16 they invoke the stack unwinder. The built-in stack unwinder may call | 16 they invoke the stack unwinder. The built-in stack unwinder may call |
17 malloc recursively, which may require the thread to acquire a lock it | 17 malloc recursively, which may require the thread to acquire a lock it |
18 already holds: deadlock.) | 18 already holds: deadlock.) |
19 | 19 |
20 For that reason, if you use a 64-bit system, we strongly recommend you | 20 For that reason, if you use a 64-bit system, we strongly recommend you |
21 install libunwind before trying to configure or install google | 21 install libunwind before trying to configure or install gperftools. |
22 perftools. libunwind can be found at | 22 libunwind can be found at |
23 | 23 |
24 http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.g
z | 24 http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.g
z |
25 | 25 |
26 Even if you already have libunwind installed, you should check the | 26 Even if you already have libunwind installed, you should check the |
27 version. Versions older than this will not work properly; too-new | 27 version. Versions older than this will not work properly; too-new |
28 versions introduce new code that does not work well with perftools | 28 versions introduce new code that does not work well with perftools |
29 (because libunwind can call malloc, which will lead to deadlock). | 29 (because libunwind can call malloc, which will lead to deadlock). |
30 | 30 |
31 CAUTION: if you install libunwind from the url above, be aware that | 31 There have been reports of crashes with libunwind 0.99 (see |
32 you may have trouble if you try to statically link your binary with | 32 http://code.google.com/p/gperftools/issues/detail?id=374). |
33 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. This | 33 Alternately, you can use a more recent libunwind (e.g. 1.0.1) at the |
34 is because both libunwind and libgcc implement the same C++ exception | 34 cost of adding a bit of boilerplate to your code. For details, see |
35 handling APIs, but they implement them differently on some platforms. | 35 http://groups.google.com/group/google-perftools/msg/2686d9f24ac4365f |
36 This is not likely to be a problem on ia64, but may be on x86-64. | |
37 | 36 |
38 Also, if you link binaries statically, make sure that you add | 37 CAUTION: if you install libunwind from the url above, be aware that |
39 -Wl,--eh-frame-hdr to your linker options. This is required so that | 38 you may have trouble if you try to statically link your binary with |
40 libunwind can find the information generated by the compiler required | 39 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. |
41 for stack unwinding. | 40 This is because both libunwind and libgcc implement the same C++ |
| 41 exception handling APIs, but they implement them differently on |
| 42 some platforms. This is not likely to be a problem on ia64, but |
| 43 may be on x86-64. |
42 | 44 |
43 Using -static is rare, though, so unless you know this will affect you | 45 Also, if you link binaries statically, make sure that you add |
44 it probably won't. | 46 -Wl,--eh-frame-hdr to your linker options. This is required so that |
| 47 libunwind can find the information generated by the compiler |
| 48 required for stack unwinding. |
| 49 |
| 50 Using -static is rare, though, so unless you know this will affect |
| 51 you it probably won't. |
45 | 52 |
46 If you cannot or do not wish to install libunwind, you can still try | 53 If you cannot or do not wish to install libunwind, you can still try |
47 to use the built-in stack unwinder. The built-in stack unwinder | 54 to use the built-in stack unwinder. The built-in stack unwinder |
48 requires that your application, the tcmalloc library, and system | 55 requires that your application, the tcmalloc library, and system |
49 libraries like libc, all be compiled with a frame pointer. This is | 56 libraries like libc, all be compiled with a frame pointer. This is |
50 *not* the default for x86-64. | 57 *not* the default for x86-64. |
51 | 58 |
52 If you are on x86-64 system, know that you have a set of system | 59 If you are on x86-64 system, know that you have a set of system |
53 libraries with frame-pointers enabled, and compile all your | 60 libraries with frame-pointers enabled, and compile all your |
54 applications with -fno-omit-frame-pointer, then you can enable the | 61 applications with -fno-omit-frame-pointer, then you can enable the |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 asking for trouble in any case: some data will be allocated with one | 137 asking for trouble in any case: some data will be allocated with one |
131 malloc, some with another. If, for some reason, you *do* need to use | 138 malloc, some with another. If, for some reason, you *do* need to use |
132 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc | 139 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc |
133 with TLS turned off; see the ___tls_get_addr note above. | 140 with TLS turned off; see the ___tls_get_addr note above. |
134 | 141 |
135 | 142 |
136 *** COMPILING ON NON-LINUX SYSTEMS | 143 *** COMPILING ON NON-LINUX SYSTEMS |
137 | 144 |
138 Perftools has been tested on the following systems: | 145 Perftools has been tested on the following systems: |
139 FreeBSD 6.0 (x86) | 146 FreeBSD 6.0 (x86) |
| 147 FreeBSD 8.1 (x86_64) |
| 148 Linux CentOS 5.5 (x86_64) |
| 149 Linux Debian 4.0 (PPC) |
| 150 Linux Debian 5.0 (x86) |
140 Linux Fedora Core 3 (x86) | 151 Linux Fedora Core 3 (x86) |
141 Linux Fedora Core 4 (x86) | 152 Linux Fedora Core 4 (x86) |
142 Linux Fedora Core 5 (x86) | 153 Linux Fedora Core 5 (x86) |
143 Linux Fedora Core 6 (x86) | 154 Linux Fedora Core 6 (x86) |
| 155 Linux Fedora Core 13 (x86_64) |
| 156 Linux Fedora Core 14 (x86_64) |
| 157 Linux RedHat 9 (x86) |
| 158 Linux Slackware 13 (x86_64) |
144 Linux Ubuntu 6.06.1 (x86) | 159 Linux Ubuntu 6.06.1 (x86) |
145 Linux Ubuntu 6.06.1 (x86_64) | 160 Linux Ubuntu 6.06.1 (x86_64) |
146 Linux RedHat 9 (x86) | 161 Linux Ubuntu 10.04 (x86) |
147 Linux Debian 4.0 (PPC) | 162 Linux Ubuntu 10.10 (x86_64) |
148 Mac OS X 10.3.9 (Panther) (PowerPC) | 163 Mac OS X 10.3.9 (Panther) (PowerPC) |
149 Mac OS X 10.4.8 (Tiger) (PowerPC) | 164 Mac OS X 10.4.8 (Tiger) (PowerPC) |
150 Mac OS X 10.4.8 (Tiger) (x86) | 165 Mac OS X 10.4.8 (Tiger) (x86) |
151 Mac OS X 10.5 (Leopard) (x86) | 166 Mac OS X 10.5 (Leopard) (x86) |
152 Solaris 10 (x86) | 167 Mac OS X 10.6 (Snow Leopard) (x86) |
153 Windows XP, Visual Studio 2003 (VC++ 7) (x86) | 168 Solaris 10 (x86_64) |
| 169 Windows XP, Visual Studio 2003 (VC++ 7.1) (x86) |
154 Windows XP, Visual Studio 2005 (VC++ 8) (x86) | 170 Windows XP, Visual Studio 2005 (VC++ 8) (x86) |
| 171 Windows XP, Visual Studio 2005 (VC++ 9) (x86) |
| 172 Windows XP, Visual Studio 2005 (VC++ 10) (x86) |
155 Windows XP, MinGW 5.1.3 (x86) | 173 Windows XP, MinGW 5.1.3 (x86) |
156 Windows XP, Cygwin 5.1 (x86) | 174 Windows XP, Cygwin 5.1 (x86) |
157 | 175 |
158 It works in its full generality on the Linux systems | 176 It works in its full generality on the Linux systems |
159 tested (though see 64-bit notes above). Portions of perftools work on | 177 tested (though see 64-bit notes above). Portions of perftools work on |
160 the other systems. The basic memory-allocation library, | 178 the other systems. The basic memory-allocation library, |
161 tcmalloc_minimal, works on all systems. The cpu-profiler also works | 179 tcmalloc_minimal, works on all systems. The cpu-profiler also works |
162 fairly widely. However, the heap-profiler and heap-checker are not | 180 fairly widely. However, the heap-profiler and heap-checker are not |
163 yet as widely supported. In general, the 'configure' script will | 181 yet as widely supported. In general, the 'configure' script will |
164 detect what OS you are building for, and only build the components | 182 detect what OS you are building for, and only build the components |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...] | 270 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...] |
253 | 271 |
254 Again, the binaries and libraries that successfully build are | 272 Again, the binaries and libraries that successfully build are |
255 exactly the same as for FreeBSD. (However, while libprofiler.so can | 273 exactly the same as for FreeBSD. (However, while libprofiler.so can |
256 be used to generate profiles, pprof is not very successful at | 274 be used to generate profiles, pprof is not very successful at |
257 reading them -- necessary helper programs like nm don't seem | 275 reading them -- necessary helper programs like nm don't seem |
258 to be installed by default on Solaris, or perhaps are only | 276 to be installed by default on Solaris, or perhaps are only |
259 installed as part of the Sun C++ compiler package.) See that | 277 installed as part of the Sun C++ compiler package.) See that |
260 section for a list of binaries, and instructions on building them. | 278 section for a list of binaries, and instructions on building them. |
261 | 279 |
262 ** Windows: | 280 ** Windows (MSVC, Cygwin, and MinGW): |
263 | 281 |
264 Work on Windows is rather preliminary: we haven't found a good way | 282 Work on Windows is rather preliminary: we haven't found a good way |
265 to get stack traces in release mode on windows (that is, when FPO | 283 to get stack traces in release mode on windows (that is, when FPO |
266 is enabled), so the heap profiling may not be reliable in that | 284 is enabled), so the heap profiling may not be reliable in that |
267 case. Also, heap-checking and CPU profiling do not yet work at | 285 case. Also, heap-checking and CPU profiling do not yet work at |
268 all. But as in other ports, the basic tcmalloc library | 286 all. But as in other ports, the basic tcmalloc library |
269 functionality, overriding malloc and new and such (and even | 287 functionality, overriding malloc and new and such (and even |
270 windows-specific functions like _aligned_malloc!), is working fine, | 288 windows-specific functions like _aligned_malloc!), is working fine, |
271 at least with VC++ 7.1 (Visual Studio 2003) and VC++ 8.0 | 289 at least with VC++ 7.1 (Visual Studio 2003) through VC++ 10.0, |
272 (Visual Studio 2005), in both debug and release modes. See | 290 in both debug and release modes. See README.windows for |
273 README.windows for instructions on how to install on Windows using | 291 instructions on how to install on Windows using Visual Studio. |
274 Visual Studio. | |
275 | 292 |
276 Cygwin can compile some but not all of perftools. Furthermore, | 293 Cygwin can compile some but not all of perftools. Furthermore, |
277 there is a problem with exception-unwinding in cygwin (it can call | 294 there is a problem with exception-unwinding in cygwin (it can call |
278 malloc, which can call the exception-unwinding-setup code, which | 295 malloc, which can call the exception-unwinding-setup code, which |
279 can lead to an infinite loop). I've comitted a workaround to the | 296 can lead to an infinite loop). I've comitted a workaround to the |
280 exception unwinding problem, but it only works in debug mode and | 297 exception unwinding problem, but it only works in debug mode and |
281 when statically linking in tcmalloc. I hope to have a more proper | 298 when statically linking in tcmalloc. I hope to have a more proper |
282 fix in a later release. To configure under cygwin, run | 299 fix in a later release. To configure under cygwin, run |
283 | 300 |
284 ./configure --disable-shared CXXFLAGS=-g && make | 301 ./configure --disable-shared CXXFLAGS=-g && make |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 Do not print messages saying which checks are being made. To | 530 Do not print messages saying which checks are being made. To |
514 suppress all normal output, redirect it to `/dev/null' (any error | 531 suppress all normal output, redirect it to `/dev/null' (any error |
515 messages will still be shown). | 532 messages will still be shown). |
516 | 533 |
517 `--srcdir=DIR' | 534 `--srcdir=DIR' |
518 Look for the package's source code in directory DIR. Usually | 535 Look for the package's source code in directory DIR. Usually |
519 `configure' can determine that directory automatically. | 536 `configure' can determine that directory automatically. |
520 | 537 |
521 `configure' also accepts some other, not widely useful, options. Run | 538 `configure' also accepts some other, not widely useful, options. Run |
522 `configure --help' for more details. | 539 `configure --help' for more details. |
OLD | NEW |