INSTALL 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. Installation Instructions
  2. *************************
  3. Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
  4. 2006, 2007 Free Software Foundation, Inc.
  5. This file is free documentation; the Free Software Foundation gives
  6. unlimited permission to copy, distribute and modify it.
  7. Glog-Specific Install Notes
  8. ================================
  9. *** NOTE FOR 64-BIT LINUX SYSTEMS
  10. The glibc built-in stack-unwinder on 64-bit systems has some problems
  11. with the glog libraries. (In particular, if you are using
  12. InstallFailureSignalHandler(), the signal may be raised in the middle
  13. of malloc, holding some malloc-related locks when they invoke the
  14. stack unwinder. The built-in stack unwinder may call malloc
  15. recursively, which may require the thread to acquire a lock it already
  16. holds: deadlock.)
  17. For that reason, if you use a 64-bit system and you need
  18. InstallFailureSignalHandler(), we strongly recommend you install
  19. libunwind before trying to configure or install google glog.
  20. libunwind can be found at
  21. http://download.savannah.nongnu.org/releases/libunwind/libunwind-snap-070410.tar.gz
  22. Even if you already have libunwind installed, you will probably still
  23. need to install from the snapshot to get the latest version.
  24. CAUTION: if you install libunwind from the URL above, be aware that
  25. you may have trouble if you try to statically link your binary with
  26. glog: that is, if you link with 'gcc -static -lgcc_eh ...'. This
  27. is because both libunwind and libgcc implement the same C++ exception
  28. handling APIs, but they implement them differently on some platforms.
  29. This is not likely to be a problem on ia64, but may be on x86-64.
  30. Also, if you link binaries statically, make sure that you add
  31. -Wl,--eh-frame-hdr to your linker options. This is required so that
  32. libunwind can find the information generated by the compiler required
  33. for stack unwinding.
  34. Using -static is rare, though, so unless you know this will affect you
  35. it probably won't.
  36. If you cannot or do not wish to install libunwind, you can still try
  37. to use two kinds of stack-unwinder: 1. glibc built-in stack-unwinder
  38. and 2. frame pointer based stack-unwinder.
  39. 1. As we already mentioned, glibc's unwinder has a deadlock issue.
  40. However, if you don't use InstallFailureSignalHandler() or you don't
  41. worry about the rare possibilities of deadlocks, you can use this
  42. stack-unwinder. If you specify no options and libunwind isn't
  43. detected on your system, the configure script chooses this unwinder by
  44. default.
  45. 2. The frame pointer based stack unwinder requires that your
  46. application, the glog library, and system libraries like libc, all be
  47. compiled with a frame pointer. This is *not* the default for x86-64.
  48. If you are on x86-64 system, know that you have a set of system
  49. libraries with frame-pointers enabled, and compile all your
  50. applications with -fno-omit-frame-pointer, then you can enable the
  51. frame pointer based stack unwinder by passing the
  52. --enable-frame-pointers flag to configure.
  53. Basic Installation
  54. ==================
  55. Briefly, the shell commands `./configure; make; make install' should
  56. configure, build, and install this package. The following
  57. more-detailed instructions are generic; see the `README' file for
  58. instructions specific to this package.
  59. The `configure' shell script attempts to guess correct values for
  60. various system-dependent variables used during compilation. It uses
  61. those values to create a `Makefile' in each directory of the package.
  62. It may also create one or more `.h' files containing system-dependent
  63. definitions. Finally, it creates a shell script `config.status' that
  64. you can run in the future to recreate the current configuration, and a
  65. file `config.log' containing compiler output (useful mainly for
  66. debugging `configure').
  67. It can also use an optional file (typically called `config.cache'
  68. and enabled with `--cache-file=config.cache' or simply `-C') that saves
  69. the results of its tests to speed up reconfiguring. Caching is
  70. disabled by default to prevent problems with accidental use of stale
  71. cache files.
  72. If you need to do unusual things to compile the package, please try
  73. to figure out how `configure' could check whether to do them, and mail
  74. diffs or instructions to the address given in the `README' so they can
  75. be considered for the next release. If you are using the cache, and at
  76. some point `config.cache' contains results you don't want to keep, you
  77. may remove or edit it.
  78. The file `configure.ac' (or `configure.in') is used to create
  79. `configure' by a program called `autoconf'. You need `configure.ac' if
  80. you want to change it or regenerate `configure' using a newer version
  81. of `autoconf'.
  82. The simplest way to compile this package is:
  83. 1. `cd' to the directory containing the package's source code and type
  84. `./configure' to configure the package for your system.
  85. Running `configure' might take a while. While running, it prints
  86. some messages telling which features it is checking for.
  87. 2. Type `make' to compile the package.
  88. 3. Optionally, type `make check' to run any self-tests that come with
  89. the package.
  90. 4. Type `make install' to install the programs and any data files and
  91. documentation.
  92. 5. You can remove the program binaries and object files from the
  93. source code directory by typing `make clean'. To also remove the
  94. files that `configure' created (so you can compile the package for
  95. a different kind of computer), type `make distclean'. There is
  96. also a `make maintainer-clean' target, but that is intended mainly
  97. for the package's developers. If you use it, you may have to get
  98. all sorts of other programs in order to regenerate files that came
  99. with the distribution.
  100. 6. Often, you can also type `make uninstall' to remove the installed
  101. files again.
  102. Compilers and Options
  103. =====================
  104. Some systems require unusual options for compilation or linking that the
  105. `configure' script does not know about. Run `./configure --help' for
  106. details on some of the pertinent environment variables.
  107. You can give `configure' initial values for configuration parameters
  108. by setting variables in the command line or in the environment. Here
  109. is an example:
  110. ./configure CC=c99 CFLAGS=-g LIBS=-lposix
  111. *Note Defining Variables::, for more details.
  112. Compiling For Multiple Architectures
  113. ====================================
  114. You can compile the package for more than one kind of computer at the
  115. same time, by placing the object files for each architecture in their
  116. own directory. To do this, you can use GNU `make'. `cd' to the
  117. directory where you want the object files and executables to go and run
  118. the `configure' script. `configure' automatically checks for the
  119. source code in the directory that `configure' is in and in `..'.
  120. With a non-GNU `make', it is safer to compile the package for one
  121. architecture at a time in the source code directory. After you have
  122. installed the package for one architecture, use `make distclean' before
  123. reconfiguring for another architecture.
  124. Installation Names
  125. ==================
  126. By default, `make install' installs the package's commands under
  127. `/usr/local/bin', include files under `/usr/local/include', etc. You
  128. can specify an installation prefix other than `/usr/local' by giving
  129. `configure' the option `--prefix=PREFIX'.
  130. You can specify separate installation prefixes for
  131. architecture-specific files and architecture-independent files. If you
  132. pass the option `--exec-prefix=PREFIX' to `configure', the package uses
  133. PREFIX as the prefix for installing programs and libraries.
  134. Documentation and other data files still use the regular prefix.
  135. In addition, if you use an unusual directory layout you can give
  136. options like `--bindir=DIR' to specify different values for particular
  137. kinds of files. Run `configure --help' for a list of the directories
  138. you can set and what kinds of files go in them.
  139. If the package supports it, you can cause programs to be installed
  140. with an extra prefix or suffix on their names by giving `configure' the
  141. option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
  142. Optional Features
  143. =================
  144. Some packages pay attention to `--enable-FEATURE' options to
  145. `configure', where FEATURE indicates an optional part of the package.
  146. They may also pay attention to `--with-PACKAGE' options, where PACKAGE
  147. is something like `gnu-as' or `x' (for the X Window System). The
  148. `README' should mention any `--enable-' and `--with-' options that the
  149. package recognizes.
  150. For packages that use the X Window System, `configure' can usually
  151. find the X include and library files automatically, but if it doesn't,
  152. you can use the `configure' options `--x-includes=DIR' and
  153. `--x-libraries=DIR' to specify their locations.
  154. Specifying the System Type
  155. ==========================
  156. There may be some features `configure' cannot figure out automatically,
  157. but needs to determine by the type of machine the package will run on.
  158. Usually, assuming the package is built to be run on the _same_
  159. architectures, `configure' can figure that out, but if it prints a
  160. message saying it cannot guess the machine type, give it the
  161. `--build=TYPE' option. TYPE can either be a short name for the system
  162. type, such as `sun4', or a canonical name which has the form:
  163. CPU-COMPANY-SYSTEM
  164. where SYSTEM can have one of these forms:
  165. OS KERNEL-OS
  166. See the file `config.sub' for the possible values of each field. If
  167. `config.sub' isn't included in this package, then this package doesn't
  168. need to know the machine type.
  169. If you are _building_ compiler tools for cross-compiling, you should
  170. use the option `--target=TYPE' to select the type of system they will
  171. produce code for.
  172. If you want to _use_ a cross compiler, that generates code for a
  173. platform different from the build platform, you should specify the
  174. "host" platform (i.e., that on which the generated programs will
  175. eventually be run) with `--host=TYPE'.
  176. Sharing Defaults
  177. ================
  178. If you want to set default values for `configure' scripts to share, you
  179. can create a site shell script called `config.site' that gives default
  180. values for variables like `CC', `cache_file', and `prefix'.
  181. `configure' looks for `PREFIX/share/config.site' if it exists, then
  182. `PREFIX/etc/config.site' if it exists. Or, you can set the
  183. `CONFIG_SITE' environment variable to the location of the site script.
  184. A warning: not all `configure' scripts look for a site script.
  185. Defining Variables
  186. ==================
  187. Variables not defined in a site shell script can be set in the
  188. environment passed to `configure'. However, some packages may run
  189. configure again during the build, and the customized values of these
  190. variables may be lost. In order to avoid this problem, you should set
  191. them in the `configure' command line, using `VAR=value'. For example:
  192. ./configure CC=/usr/local2/bin/gcc
  193. causes the specified `gcc' to be used as the C compiler (unless it is
  194. overridden in the site shell script).
  195. Unfortunately, this technique does not work for `CONFIG_SHELL' due to
  196. an Autoconf bug. Until the bug is fixed you can use this workaround:
  197. CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
  198. `configure' Invocation
  199. ======================
  200. `configure' recognizes the following options to control how it operates.
  201. `--help'
  202. `-h'
  203. Print a summary of the options to `configure', and exit.
  204. `--version'
  205. `-V'
  206. Print the version of Autoconf used to generate the `configure'
  207. script, and exit.
  208. `--cache-file=FILE'
  209. Enable the cache: use and save the results of the tests in FILE,
  210. traditionally `config.cache'. FILE defaults to `/dev/null' to
  211. disable caching.
  212. `--config-cache'
  213. `-C'
  214. Alias for `--cache-file=config.cache'.
  215. `--quiet'
  216. `--silent'
  217. `-q'
  218. Do not print messages saying which checks are being made. To
  219. suppress all normal output, redirect it to `/dev/null' (any error
  220. messages will still be shown).
  221. `--srcdir=DIR'
  222. Look for the package's source code in directory DIR. Usually
  223. `configure' can determine that directory automatically.
  224. `configure' also accepts some other, not widely useful, options. Run
  225. `configure --help' for more details.