INSTALL-SOURCE
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:42k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. 2.8 MySQL Installation Using a Source Distribution
  2. ==================================================
  3. * Menu:
  4. * quick-install::                Source Installation Overview
  5. * configure-options::            Typical `configure' Options
  6. * installing-source-tree::       Installing from the Development Source Tree
  7. * compilation-problems::         Dealing with Problems Compiling MySQL
  8. * mit-pthreads::                 MIT-pthreads Notes
  9. * windows-source-build::         Installing MySQL from Source on Windows
  10. * windows-client-compiling::     Compiling MySQL Clients on Windows
  11. Before you proceed with the source installation, check first to see
  12. whether our binary is available for your platform and whether it works
  13. for you. We put a lot of effort into making sure that our binaries are
  14. built with the best possible options.
  15. To obtain a source distribution for MySQL, *Note getting-mysql::.
  16. MySQL source distributions are provided as compressed `tar' archives
  17. and have names of the form `mysql-VERSION.tar.gz', where VERSION is a
  18. number like `4.1.13'.
  19. You need the following tools to build and install MySQL from source:
  20.    * GNU `gunzip' to uncompress the distribution.
  21.    * A reasonable `tar' to unpack the distribution. GNU `tar' is known
  22.      to work.  Some operating systems come with a pre-installed version
  23.      of `tar' that is known to have problems. For example, Mac OS X
  24.      `tar' and Sun `tar' are known to have problems with long
  25.      filenames. On Mac OS X, you can use the pre-installed `gnutar'
  26.      program. On other systems with a deficient `tar', you should
  27.      install GNU `tar' first.
  28.    * A working ANSI C++ compiler. `gcc' 2.95.2 or later, `egcs' 1.0.2
  29.      or later or `egcs 2.91.66', SGI C++, and SunPro C++ are some of the
  30.      compilers that are known to work. `libg++' is not needed when
  31.      using `gcc'.  `gcc' 2.7.x has a bug that makes it impossible to
  32.      compile some perfectly legal C++ files, such as `sql/sql_base.cc'.
  33.      If you have only `gcc' 2.7.x, you must upgrade your `gcc' to be
  34.      able to compile MySQL.  `gcc' 2.8.1 is also known to have problems
  35.      on some platforms, so it should be avoided if a new compiler
  36.      exists for the platform.
  37.      `gcc' 2.95.2 or later is recommended when compiling MySQL 3.23.x.
  38.    * A good `make' program. GNU `make' is always recommended and is
  39.      sometimes required. If you have problems, we recommend trying GNU
  40.      `make' 3.75 or newer.
  41. If you are using a version of `gcc' recent enough to understand the
  42. -fno-exceptions option, it is _very important_ that you use this option.
  43. Otherwise, you may compile a binary that crashes randomly. We also
  44. recommend that you also use -felide-constructors and -fno-rtti as well.
  45. When in doubt, do the following:
  46.      CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors 
  47.             -fno-exceptions -fno-rtti" ./configure 
  48.             --prefix=/usr/local/mysql --enable-assembler 
  49.             --with-mysqld-ldflags=-all-static
  50. On most systems, this gives you a fast and stable binary.
  51. If you run into problems, _please always use `mysqlbug'_ when posting
  52. questions to a MySQL mailing list. Even if the problem is not a bug,
  53. `mysqlbug' gathers system information that helps others solve your
  54. problem. By not using `mysqlbug', you lessen the likelihood of getting
  55. a solution to your problem. You can find `mysqlbug' in the `scripts'
  56. directory after you unpack the distribution. See *Note bug-reports::.
  57. File: manual.info,  Node: quick-install,  Next: configure-options,  Prev: installing-source,  Up: installing-source
  58. 2.8.1 Source Installation Overview
  59. ----------------------------------
  60. The basic commands you must execute to install a MySQL source
  61. distribution are:
  62.      shell> groupadd mysql
  63.      shell> useradd -g mysql mysql
  64.      shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
  65.      shell> cd mysql-VERSION
  66.      shell> ./configure --prefix=/usr/local/mysql
  67.      shell> make
  68.      shell> make install
  69.      shell> cp support-files/my-medium.cnf /etc/my.cnf
  70.      shell> cd /usr/local/mysql
  71.      shell> bin/mysql_install_db --user=mysql
  72.      shell> chown -R root  .
  73.      shell> chown -R mysql var
  74.      shell> chgrp -R mysql .
  75.      shell> bin/mysqld_safe --user=mysql &
  76. For versions of MySQL older than 4.0, substitute `bin/safe_mysqld' for
  77. `bin/mysqld_safe' in the final command.
  78. If you start from a source RPM, do the following:
  79.      shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm
  80. This makes a binary RPM that you can install. For older versions of
  81. RPM, you may have to replace the command `rpmbuild' with `rpm' instead.
  82. *Note*: This procedure does not set up any passwords for MySQL
  83. accounts. After following the procedure, proceed to *Note
  84. post-installation::, for post-installation setup and testing.
  85. A more detailed version of the preceding description for installing
  86. MySQL from a source distribution follows:
  87.   1. Add a login user and group for `mysqld' to run as:
  88.           shell> groupadd mysql
  89.           shell> useradd -g mysql mysql
  90.      These commands add the `mysql' group and the `mysql' user. The
  91.      syntax for `useradd' and `groupadd' may differ slightly on
  92.      different versions of Unix. They may also be called `adduser' and
  93.      `addgroup'.
  94.      You might want to call the user and group something other than
  95.      `mysql'. If so, substitute the appropriate name in the following
  96.      steps.
  97.   2. Pick the directory under which you want to unpack the
  98.      distribution, and change location into it.
  99.   3. Obtain a distribution file from one of the sites listed in *Note
  100.      getting-mysql::.
  101.   4. Unpack the distribution into the current directory:
  102.           shell> gunzip < /PATH/TO/MYSQL-VERSION.tar.gz | tar xvf -
  103.      This command creates a directory named `mysql-VERSION'.
  104.      With GNU `tar', no separate invocation of `gunzip' is necessary.
  105.      You can use the following alternative command to uncompress and
  106.      extract the distribution:
  107.           shell> tar zxvf /PATH/TO/MYSQL-VERSION-OS.tar.gz
  108.   5. Change location into the top-level directory of the unpacked
  109.      distribution:
  110.           shell> cd mysql-VERSION
  111.      Note that currently you must configure and build MySQL from this
  112.      top-level directory. You cannot build it in a different directory.
  113.   6. Configure the release and compile everything:
  114.           shell> ./configure --prefix=/usr/local/mysql
  115.           shell> make
  116.      When you run `configure', you might want to specify some options.
  117.      Run `./configure --help' for a list of options.  *Note
  118.      configure-options::, discusses some of the more useful options.
  119.      If `configure' fails and you are going to send mail to a MySQL
  120.      mailing list to ask for assistance, please include any lines from
  121.      `config.log' that you think can help solve the problem. Also
  122.      include the last couple of lines of output from `configure'. Post
  123.      the bug report using the `mysqlbug' script. See *Note
  124.      bug-reports::.
  125.      If the compile fails, see *Note compilation-problems:: for help.
  126.   7. Install the distribution:
  127.           shell> make install
  128.      If you want to set up an option file, use one of those present in
  129.      the `support-files' directory as a template. For example:
  130.           shell> cp support-files/my-medium.cnf /etc/my.cnf
  131.      You might need to run these commands as `root'.
  132.      If you want to configure support for `InnoDB' tables, you should
  133.      edit the `/etc/my.cnf' file, removing the `#' character before the
  134.      option lines that start with `innodb_...', and modify the option
  135.      values to be what you want. See *Note option-files:: and *Note
  136.      innodb-configuration::.
  137.   8. Change location into the installation directory:
  138.           shell> cd /usr/local/mysql
  139.   9. If you have not installed MySQL before, you must create the MySQL
  140.      grant tables:
  141.           shell> bin/mysql_install_db --user=mysql
  142.      If you run the command as `root', you should use the -user option
  143.      as shown. The value of the option should be the name of the login
  144.      account that you created in the first step to use for running the
  145.      server. If you run the command while logged in as that user, you
  146.      can omit the -user option.
  147.      Note that for MySQL versions older than 3.22.10,
  148.      `mysql_install_db' left the server running after creating the
  149.      grant tables. This is no longer true; you need to restart the
  150.      server after performing the remaining steps in this procedure.
  151.  10. Change the ownership of program binaries to `root' and ownership
  152.      of the data directory to the user that you run `mysqld' as.
  153.      Assuming that you are in the installation directory
  154.      (`/usr/local/mysql'), the commands look like this:
  155.           shell> chown -R root  .
  156.           shell> chown -R mysql var
  157.           shell> chgrp -R mysql .
  158.      The first command changes the owner attribute of the files to the
  159.      `root' user. The second changes the owner attribute of the data
  160.      directory to the `mysql' user. The third changes the group
  161.      attribute to the `mysql' group.
  162.  11. If you would like MySQL to start automatically when you boot your
  163.      machine, you can copy `support-files/mysql.server' to the location
  164.      where your system has its startup files. More information can be
  165.      found in the script itself, and in *Note automatic-start::.
  166.  12. You can set up new accounts using the `bin/mysql_setpermission'
  167.      script if you install the `DBI' and `DBD::mysql' Perl modules. For
  168.      instructions, see *Note perl-support::.
  169. After everything has been installed, you should initialize and test
  170. your distribution using this command:
  171.      shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
  172. For versions of MySQL older than 4.0, substitute `safe_mysqld' for
  173. `mysqld_safe' in the command.
  174. If that command fails immediately and prints `mysqld ended', you can
  175. find some information in the `HOST_NAME.err' file in the data directory.
  176. More information about `mysqld_safe' is given in *Note mysqld-safe::.
  177. *Note*: The accounts that are listed in the MySQL grant tables
  178. initially have no passwords.  After starting the server, you should set
  179. up passwords for them using the instructions in *Note
  180. post-installation::.
  181. File: manual.info,  Node: configure-options,  Next: installing-source-tree,  Prev: quick-install,  Up: installing-source
  182. 2.8.2 Typical `configure' Options
  183. ---------------------------------
  184. The `configure' script gives you a great deal of control over how you
  185. configure a MySQL source distribution.  Typically you do this using
  186. options on the `configure' command line. You can also affect
  187. `configure' using certain environment variables. See *Note
  188. environment-variables::. For a list of options supported by
  189. `configure', run this command:
  190.      shell> ./configure --help
  191. Some of the more commonly used `configure' options are described here:
  192.    * To compile just the MySQL client libraries and client programs and
  193.      not the server, use the -without-server option:
  194.           shell> ./configure --without-server
  195.      If you do not have a C++ compiler, `mysql' cannot be compiled (it
  196.      is the one client program that requires C++). In this case, you
  197.      can remove the code in `configure' that tests for the C++ compiler
  198.      and then run `./configure' with the -without-server option. The
  199.      compile step should still try to build `mysql', but you can ignore
  200.      any warnings about `mysql.cc'.  (If `make' stops, try `make -k' to
  201.      tell it to continue with the rest of the build even if errors
  202.      occur.)
  203.    * If you want to build the embedded MySQL library (`libmysqld.a')
  204.      you should use the -with-embedded-server option.
  205.    * If you do not want your log files and database directories located
  206.      under `/usr/local/var', use a `configure' command something like
  207.      one of these:
  208.           shell> ./configure --prefix=/usr/local/mysql
  209.           shell> ./configure --prefix=/usr/local 
  210.                      --localstatedir=/usr/local/mysql/data
  211.      The first command changes the installation prefix so that
  212.      everything is installed under `/usr/local/mysql' rather than the
  213.      default of `/usr/local'. The second command preserves the default
  214.      installation prefix, but overrides the default location for
  215.      database directories (normally `/usr/local/var') and changes it to
  216.      `/usr/local/mysql/data'. After you have compiled MySQL, you can
  217.      change these options with option files. See *Note option-files::.
  218.    * If you are using Unix and you want the MySQL socket located
  219.      somewhere other than the default location (normally in the
  220.      directory `/tmp' or `/var/run'), use a `configure' command like
  221.      this:
  222.           shell> ./configure 
  223.                      --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
  224.      The socket filename must be an absolute pathname. You can also
  225.      change the location of `mysql.sock' later by using a MySQL option
  226.      file. See *Note problems-with-mysql-sock::.
  227.    * If you want to compile statically linked programs (for example, to
  228.      make a binary distribution, to get more speed, or to work around
  229.      problems with some Red Hat Linux distributions), run `configure'
  230.      like this:
  231.           shell> ./configure --with-client-ldflags=-all-static 
  232.                      --with-mysqld-ldflags=-all-static
  233.    * If you are using `gcc' and do not have `libg++' or `libstdc++'
  234.      installed, you can tell `configure' to use `gcc' as your C++
  235.      compiler:
  236.           shell> CC=gcc CXX=gcc ./configure
  237.      When you use `gcc' as your C++ compiler, it does not attempt to
  238.      link in `libg++' or `libstdc++'. This may be a good idea to do
  239.      even if you have these libraries installed, because some versions
  240.      of them have caused strange problems for MySQL users in the past.
  241.      The following list indicates some compilers and environment
  242.      variable settings that are commonly used with each one.
  243.         * `gcc' 2.7.2:
  244.                CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
  245.         * `egcs' 1.0.3a:
  246.                CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors 
  247.                -fno-exceptions -fno-rtti"
  248.         * `gcc' 2.95.2:
  249.                CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro 
  250.                -felide-constructors -fno-exceptions -fno-rtti"
  251.         * `pgcc' 2.90.29 or newer:
  252.                CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc 
  253.                CXXFLAGS="-O3 -mpentiumpro -mstack-align-double 
  254.                -felide-constructors -fno-exceptions -fno-rtti"
  255.      In most cases, you can get a reasonably optimized MySQL binary by
  256.      using the options from the preceding list and adding the following
  257.      options to the `configure' line:
  258.           --prefix=/usr/local/mysql --enable-assembler 
  259.           --with-mysqld-ldflags=-all-static
  260.      The full `configure' line would, in other words, be something like
  261.      the following for all recent `gcc' versions:
  262.           CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro 
  263.           -felide-constructors -fno-exceptions -fno-rtti" ./configure 
  264.           --prefix=/usr/local/mysql --enable-assembler 
  265.           --with-mysqld-ldflags=-all-static
  266.      The binaries we provide on the MySQL Web site at
  267.      `http://www.mysql.com/' are all compiled with full optimization
  268.      and should be perfect for most users. See *Note mysql-binaries::.
  269.      There are some configuration settings you can tweak to make an
  270.      even faster binary, but these are only for advanced users. See
  271.      *Note compile-and-link-options::.
  272.      If the build fails and produces errors about your compiler or
  273.      linker not being able to create the shared library
  274.      `libmysqlclient.so.N' (where N is a version number), you can work
  275.      around this problem by giving the -disable-shared option to
  276.      `configure'. In this case, `configure' does not build a shared
  277.      `libmysqlclient.so.N' library.
  278.    * By default, MySQL uses the `latin1' (cp1252) character set. To
  279.      change the default set, use the -with-charset option:
  280.           shell> ./configure --with-charset=CHARSET
  281.      CHARSET may be one of `big5', `cp1251', `cp1257', `czech',
  282.      `danish', `dec8', `dos', `euc_kr', `gb2312', `gbk', `german1',
  283.      `hebrew', `hp8', `hungarian', `koi8_ru', `koi8_ukr', `latin1',
  284.      `latin2', `sjis', `swe7', `tis620', `ujis', `usa7', or
  285.      `win1251ukr'.  See *Note character-sets::.
  286.      As of MySQL 4.1.1, the default collation may also be specified.
  287.      MySQL uses the `latin1_swedish_ci' collation. To change this, use
  288.      the -with-collation option:
  289.           shell> ./configure --with-collation=COLLATION
  290.      To change both the character set and the collation, use both the
  291.      -with-charset and -with-collation options. The collation must be a
  292.      legal collation for the character set. (Use the `SHOW COLLATION'
  293.      statement to determine which collations are available for each
  294.      character set.)
  295.      If you want to convert characters between the server and the
  296.      client, you should take a look at the `SET CHARACTER SET'
  297.      statement. See *Note set-option::.
  298.      *Warning:* If you change character sets after having created any
  299.      tables, you have to run `myisamchk -r -q
  300.      --set-character-set=CHARSET' on every table. Your indexes may be
  301.      sorted incorrectly otherwise. (This can happen if you install
  302.      MySQL, create some tables, then reconfigure MySQL to use a
  303.      different character set and reinstall it.)
  304.      With the `configure' option -with-extra-charsets=LIST, you can
  305.      define which additional character sets should be compiled into the
  306.      server. LIST is either a list of character set names separated by
  307.      spaces, `complex' to include all character sets that cannot be
  308.      dynamically loaded, or `all' to include all character sets into
  309.      the binaries.
  310.    * To configure MySQL with debugging code, use the -with-debug option:
  311.           shell> ./configure --with-debug
  312.      This causes a safe memory allocator to be included that can find
  313.      some errors and that provides output about what is happening. See
  314.      *Note debugging-server::.
  315.    * If your client programs are using threads, you also must compile a
  316.      thread-safe version of the MySQL client library with the
  317.      -enable-thread-safe-client configure option. This creates a
  318.      `libmysqlclient_r' library with which you should link your
  319.      threaded applications. See *Note threaded-clients::.
  320.    * It is now possible to build MySQL with big table support using the
  321.      -with-big-tables option, beginning with the following MySQL
  322.      versions:
  323.         * *4.0 series*: 4.0.25
  324.         * *4.1 series*: 4.1.11
  325.      This option causes the variables used to keep table row counts to
  326.      be stored using `unsigned long long' rather than `unsigned long'.
  327.      What this does is to allow tables to hold up to approximately
  328.      1.844E+19 ((232)2) rows rather than 232 (~4.295E+09) rows.
  329.      Previously it was necessary to pass -DBIG_TABLES to the compiler
  330.      manually in order to enable this feature.
  331.    * Options that pertain to particular systems can be found in the
  332.      system-specific section of this manual. See *Note
  333.      operating-system-specific-notes::.
  334. File: manual.info,  Node: installing-source-tree,  Next: compilation-problems,  Prev: configure-options,  Up: installing-source
  335. 2.8.3 Installing from the Development Source Tree
  336. -------------------------------------------------
  337. *Caution*: You should read this section only if you are interested in
  338. helping us test new code.  If you just want to get MySQL up and running
  339. on your system, you should use a standard release distribution (either
  340. a binary or source distribution).
  341. To obtain our most recent development source tree, use these
  342. instructions:
  343.   1. Download the BitKeeper free client from
  344.      `http://www.bitmover.com/bk-client.shar'.
  345.   2. On Unix, install the free client like this:
  346.           shell> sh bk-client.shar
  347.           shell> cd bk_client-1.1
  348.           shell> make all
  349.           shell> PATH=$PWD:$PATH
  350.      On Windows, install it like this:
  351.         * Download and install Cygwin from http://cygwin.com
  352.           (http://cygwin.com/).
  353.         * Make sure `gcc' and `make' have been installed under Cygwin.
  354.           You can test this by issuing `which gcc' and `which make'
  355.           commands. If either one is not installed, run Cygwin's
  356.           package manager, select `gcc', `make', or both, and install
  357.           them.
  358.         * Under Cygwin, perform these steps:
  359.                shell> sh bk-client.shar
  360.                shell> cd bk_client-1.1
  361.           Then edit the `Makefile' and change the line that reads
  362.           `$(CC) $(CFLAGS) -o sfio -lz sfio.c' to this:
  363.                $(CC) $(CFLAGS) -o sfio sfio.c -lz
  364.           Now run the `make' command and set the path:
  365.                shell> make all
  366.                shell> PATH=$PWD:$PATH
  367.   3. After the BitKeeper free client has been installed, first go to
  368.      the directory you want to work from, and then use one of the
  369.      following commands to make a local copy of the MySQL version
  370.      branch of your choice:
  371.      To copy the 3.23 branch, use this command:
  372.           shell> sfioball -r+ bk://mysql.bkbits.net/mysql-3.23 mysql-3.23
  373.      To copy the 4.0 branch, use this command:
  374.           shell> sfioball -r+ bk://mysql.bkbits.net/mysql-4.0 mysql-4.0
  375.      To copy the 4.1 branch, use this command:
  376.           shell> sfioball -r+ bk://mysql.bkbits.net/mysql-4.1 mysql-4.1
  377.      Normally, you do not have to build the documentation yourself,
  378.      because we provide it in various formats on
  379.      `http://dev.mysql.com/doc/'. The formats you can download there
  380.      (HTML, PDF, etc.) are built on a daily basis, so you gain little
  381.      by creating them yourself from the DocBook XML base format in the
  382.      `mysqldoc' tree. If you would like to copy the documentation
  383.      repository, use the following command:
  384.           shell> sfioball -r+ bk://mysql.bkbits.net/mysqldoc mysqldoc
  385.      In the preceding examples, the source tree is set up in the
  386.      `mysql-3.23/', `mysql-4.0/', or `mysql-4.1/' subdirectory of your
  387.      current directory.
  388.      If you are behind a firewall and can initiate only HTTP
  389.      connections, you can also use BitKeeper via HTTP.
  390.      If you are required to use a proxy server, set the environment
  391.      variable `http_proxy' to point to your proxy:
  392.           shell> export http_proxy="http://your.proxy.server:8080/"
  393.      Replace `bk://' with `http://' when copying a repository.  Example:
  394.           shell> sfioball -r+ http://mysql.bkbits.net/mysql-5.0 mysql-5.0
  395.      The initial download of the source tree may take a while,
  396.      depending on the speed of your connection. Please be patient.
  397.   4. To update the local copy of a repository, use this command (the
  398.      example is for updating the 4.1 branch):
  399.           shell> update bk://mysql.bkbits.net/mysql-4.1
  400.   5. You need GNU `make', `autoconf' 2.58 (or newer), `automake' 1.8,
  401.      `libtool' 1.5, and `m4' to run the next set of commands. Even
  402.      though many operating systems come with their own implementation
  403.      of `make', chances are high that the compilation fails with
  404.      strange error messages.  Therefore, it is highly recommended that
  405.      you use GNU `make' (sometimes named `gmake') instead.
  406.      Fortunately, a large number of operating systems ship with the GNU
  407.      toolchain preinstalled or supply installable packages of these.
  408.      They can also be downloaded from the following locations:
  409.         * `http://www.gnu.org/software/autoconf/'
  410.         * `http://www.gnu.org/software/automake/'
  411.         * `http://www.gnu.org/software/libtool/'
  412.         * `http://www.gnu.org/software/m4/'
  413.         * `http://www.gnu.org/software/make/'
  414.      If you are trying to configure MySQL 4.1, you also need GNU
  415.      `bison' 1.75 or later. Older versions of `bison' may report this
  416.      error:
  417.           sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
  418.      Note: The maximum table size is not actually exceeded; the error
  419.      is caused by bugs in older versions of `bison'.
  420.      Versions of MySQL before version 4.1 may also compile with other
  421.      `yacc' implementations (for example, BSD `yacc' 91.7.30). For
  422.      later versions, GNU `bison' is required.
  423.      The following example shows the typical commands required to
  424.      configure a source tree. The first `cd' command changes location
  425.      into the top-level directory of the tree; replace `mysql-5.0' with
  426.      the appropriate directory name.
  427.           shell> cd mysql-5.0
  428.           shell> bk -r edit
  429.           shell> aclocal; autoheader
  430.           shell> libtoolize --automake --force
  431.           shell> automake --force --add-missing; autoconf
  432.           shell> (cd innobase; aclocal; autoheader; autoconf; automake)
  433.           shell> (cd bdb/dist; sh s_all)
  434.           shell> ./configure  # Add your favorite options here
  435.           shell> make
  436.      Or you can use `BUILD/autorun.sh' as a shortcut for the following
  437.      sequence of commands:
  438.           shell> aclocal; autoheader
  439.           shell> libtoolize --automake --force
  440.           shell> automake --force --add-missing; autoconf
  441.           shell> (cd innobase; aclocal; autoheader; autoconf; automake)
  442.           shell> (cd bdb/dist; sh s_all)
  443.      The command lines that change directory into the `innobase' and
  444.      `bdb/dist' directories are used to configure the `InnoDB' and
  445.      Berkeley DB (`BDB') storage engines. You can omit these command
  446.      lines if you to not require `InnoDB' or `BDB' support.
  447.      If you get some strange errors during this stage, verify that you
  448.      really have `libtool' installed.
  449.      A collection of our standard configuration scripts is located in
  450.      the `BUILD' subdirectory. You may find it more convenient to use
  451.      the `BUILD/compile-pentium-debug' script than the preceding set of
  452.      shell commands. To compile on a different architecture, modify the
  453.      script by removing flags that are Pentium-specific.
  454.   6. When the build is done, run `make install'.  Be careful with this
  455.      on a production machine; the command may overwrite your live
  456.      release installation. If you have another installation of MySQL,
  457.      we recommend that you run `./configure' with different values for
  458.      the -prefix, -with-tcp-port, and -unix-socket-path options than
  459.      those used for your production server.
  460.   7. Play hard with your new installation and try to make the new
  461.      features crash. Start by running `make test'. See *Note
  462.      mysql-test-suite::.
  463.   8. If you have gotten to the `make' stage and the distribution does
  464.      not compile, please report it in our bugs database at
  465.      `http://bugs.mysql.com/'. If you have installed the latest
  466.      versions of the required GNU tools, and they crash trying to
  467.      process our configuration files, please report that also. However,
  468.      if you execute `aclocal' and get a `command not found' error or a
  469.      similar problem, do not report it. Instead, make sure that all the
  470.      necessary tools are installed and that your `PATH' variable is set
  471.      correctly so that your shell can find them.
  472.   9. After the initial copying of the repository (`sfioball') to obtain
  473.      the source tree, you should update the repository (`update')
  474.      periodically to get updates.
  475.  10. You can examine the change history for the tree with all the diffs
  476.      by viewing the `BK/ChangeLog' file in the source tree and looking
  477.      at the `ChangeSet' descriptions listed there. To examine a
  478.      particular changeset, you would have to use the `sfioball' command
  479.      to extract two particular revisions of the source tree, then use an
  480.      external `diff' command to compare them. If you see diffs or code
  481.      that you have a question about, do not hesitate to send email to
  482.      the MySQL `internals' mailing list. See *Note mailing-list::. If
  483.      you think you have a better idea on how to do something, send an
  484.      email message to the same address with a patch.
  485.  11. The BitKeeper free client is shipped with its source code.  The
  486.      only documentation available for the free client is the source
  487.      code itself.
  488. You can also browse changesets, comments, and source code online. For
  489. example, to browse this information for MySQL 4.1, go to
  490. `http://mysql.bkbits.net:8080/mysql-4.1'.
  491. File: manual.info,  Node: compilation-problems,  Next: mit-pthreads,  Prev: installing-source-tree,  Up: installing-source
  492. 2.8.4 Dealing with Problems Compiling MySQL
  493. -------------------------------------------
  494. All MySQL programs compile cleanly for us with no warnings on Solaris
  495. or Linux using `gcc'. On other systems, warnings may occur due to
  496. differences in system include files.  See *Note mit-pthreads:: for
  497. warnings that may occur when using MIT-pthreads. For other problems,
  498. check the following list.
  499. The solution to many problems involves reconfiguring. If you do need to
  500. reconfigure, take note of the following:
  501.    * If `configure' is run after it has previously been run, it may use
  502.      information that was gathered during its previous invocation. This
  503.      information is stored in `config.cache'. When `configure' starts
  504.      up, it looks for that file and reads its contents if it exists, on
  505.      the assumption that the information is still correct. That
  506.      assumption is invalid when you reconfigure.
  507.    * Each time you run `configure', you must run `make' again to
  508.      recompile. However, you may want to remove old object files from
  509.      previous builds first because they were compiled using different
  510.      configuration options.
  511. To prevent old configuration information or object files from being
  512. used, run these commands before re-running `configure':
  513.      shell> rm config.cache
  514.      shell> make clean
  515. Alternatively, you can run `make distclean'.
  516. The following list describes some of the problems when compiling MySQL
  517. that have been found to occur most often:
  518.    * If you get errors such as the ones shown here when compiling
  519.      `sql_yacc.cc', you probably have run out of memory or swap space:
  520.           Internal compiler error: program cc1plus got fatal signal 11
  521.           Out of virtual memory
  522.           Virtual memory exhausted
  523.      The problem is that `gcc' requires a huge amount of memory to
  524.      compile `sql_yacc.cc' with inline functions. Try running
  525.      `configure' with the -with-low-memory option:
  526.           shell> ./configure --with-low-memory
  527.      This option causes -fno-inline to be added to the compile line if
  528.      you are using `gcc' and -O0 if you are using something else.  You
  529.      should try the -with-low-memory option even if you have so much
  530.      memory and swap space that you think you cannot possibly have run
  531.      out. This problem has been observed to occur even on systems with
  532.      generous hardware configurations and the -with-low-memory option
  533.      usually fixes it.
  534.    * By default, `configure' picks `c++' as the compiler name and GNU
  535.      `c++' links with -lg++. If you are using `gcc', that behavior can
  536.      cause problems during configuration such as this:
  537.           configure: error: installation or configuration problem:
  538.           C++ compiler cannot create executables.
  539.      You might also observe problems during compilation related to
  540.      `g++', `libg++', or `libstdc++'.
  541.      One cause of these problems is that you may not have `g++', or you
  542.      may have `g++' but not `libg++', or `libstdc++'. Take a look at the
  543.      `config.log' file. It should contain the exact reason why your C++
  544.      compiler did not work. To work around these problems, you can use
  545.      `gcc' as your C++ compiler. Try setting the environment variable
  546.      `CXX' to `"gcc -O3"'. For example:
  547.           shell> CXX="gcc -O3" ./configure
  548.      This works because `gcc' compiles C++ sources as well as `g++'
  549.      does, but does not link in `libg++' or `libstdc++' by default.
  550.      Another way to fix these problems is to install `g++', `libg++',
  551.      and `libstdc++'. We would, however, like to recommend that you not
  552.      use `libg++' or `libstdc++' with MySQL because this only increases
  553.      the binary size of `mysqld' without giving you any benefits. Some
  554.      versions of these libraries have also caused strange problems for
  555.      MySQL users in the past.
  556.      Using `gcc' as the C++ compiler is also required if you want to
  557.      compile MySQL with RAID functionality (see *Note create-table::
  558.      for more info on RAID table type) and you are using GNU `gcc'
  559.      version 3 and above. If you get errors like those following during
  560.      the linking stage when you configure MySQL to compile with the
  561.      option -with-raid, try to use `gcc' as your C++ compiler by
  562.      defining the `CXX' environment variable:
  563.           gcc -O3 -DDBUG_OFF -rdynamic -o isamchk isamchk.o sort.o  libnisam.a
  564.           ../mysys/libmysys.a ../dbug/libdbug.a ../strings/libmystrings.a
  565.            -lpthread -lz -lcrypt -lnsl -lm -lpthread
  566.           ../mysys/libmysys.a(raid.o)(.text+0x79): In function
  567.           `my_raid_create':: undefined reference to `operator new(unsigned)'
  568.           ../mysys/libmysys.a(raid.o)(.text+0xdd): In function
  569.           `my_raid_create':: undefined reference to `operator delete(void*)'
  570.           ../mysys/libmysys.a(raid.o)(.text+0x129): In function
  571.           `my_raid_open':: undefined reference to `operator new(unsigned)'
  572.           ../mysys/libmysys.a(raid.o)(.text+0x189): In function
  573.           `my_raid_open':: undefined reference to `operator delete(void*)'
  574.           ../mysys/libmysys.a(raid.o)(.text+0x64b): In function
  575.           `my_raid_close':: undefined reference to `operator delete(void*)'
  576.           collect2: ld returned 1 exit status
  577.    * If your compilation fails with errors such as any of the
  578.      following, you must upgrade your version of `make' to GNU `make':
  579.           making all in mit-pthreads
  580.           make: Fatal error in reader: Makefile, line 18:
  581.           Badly formed macro assignment
  582.      Or:
  583.           make: file `Makefile' line 18: Must be a separator (:
  584.      Or:
  585.           pthread.h: No such file or directory
  586.      Solaris and FreeBSD are known to have troublesome `make' programs.
  587.      GNU `make' Version 3.75 is known to work.
  588.    * If you want to define flags to be used by your C or C++ compilers,
  589.      do so by adding the flags to the `CFLAGS' and `CXXFLAGS'
  590.      environment variables. You can also specify the compiler names
  591.      this way using `CC' and `CXX'. For example:
  592.           shell> CC=gcc
  593.           shell> CFLAGS=-O3
  594.           shell> CXX=gcc
  595.           shell> CXXFLAGS=-O3
  596.           shell> export CC CFLAGS CXX CXXFLAGS
  597.      See *Note mysql-binaries::, for a list of flag definitions that
  598.      have been found to be useful on various systems.
  599.    * If you get an error message like this, you need to upgrade your
  600.      `gcc' compiler:
  601.           client/libmysql.c:273: parse error before `__attribute__'
  602.      `gcc' 2.8.1 is known to work, but we recommend using `gcc' 2.95.2
  603.      or `egcs' 1.0.3a instead.
  604.    * If you get errors such as those shown here when compiling
  605.      `mysqld', `configure' did not correctly detect the type of the
  606.      last argument to `accept()', `getsockname()', or `getpeername()':
  607.           cxx: Error: mysqld.cc, line 645: In this statement, the referenced
  608.                type of the pointer value ''length'' is ''unsigned long'',
  609.                which is not compatible with ''int''.
  610.           new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
  611.      To fix this, edit the `config.h' file (which is generated by
  612.      `configure'). Look for these lines:
  613.           /* Define as the base type of the last arg to accept */
  614.           #define SOCKET_SIZE_TYPE XXX
  615.      Change `XXX' to `size_t' or `int', depending on your operating
  616.      system. (Note that you have to do this each time you run
  617.      `configure' because `configure' regenerates `config.h'.)
  618.    * The `sql_yacc.cc' file is generated from `sql_yacc.yy'. Normally
  619.      the build process does not need to create `sql_yacc.cc', because
  620.      MySQL comes with an pre-generated copy. However, if you do need to
  621.      re-create it, you might encounter this error:
  622.           "sql_yacc.yy", line XXX fatal: default action causes potential...
  623.      This is a sign that your version of `yacc' is deficient. You
  624.      probably need to install `bison' (the GNU version of `yacc') and
  625.      use that instead.
  626.    * On Debian Linux 3.0, you need to install `gawk' instead of the
  627.      default `mawk' if you want to compile MySQL 4.1 or higher with
  628.      Berkeley DB support.
  629.    * If you need to debug `mysqld' or a MySQL client, run `configure'
  630.      with the -with-debug option, then recompile and link your clients
  631.      with the new client library. See *Note debugging-client::.
  632.    * If you get a compilation error on Linux (for example, SuSE Linux
  633.      8.1 or Red Hat Linux 7.3) similar to the following one:
  634.           libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from
  635.           incompatible pointer type
  636.           libmysql.c:1329: too few arguments to function `gethostbyname_r'
  637.           libmysql.c:1329: warning: assignment makes pointer from integer
  638.           without a cast
  639.           make[2]: *** [libmysql.lo] Error 1
  640.      By default, the `configure' script attempts to determine the
  641.      correct number of arguments by using `g++' the GNU C++ compiler.
  642.      This test yields wrong results if `g++' is not installed. There
  643.      are two ways to work around this problem:
  644.         * Make sure that the GNU C++ `g++' is installed. On some Linux
  645.           distributions, the required package is called `gpp'; on
  646.           others, it is named `gcc-c++'.
  647.         * Use `gcc' as your C++ compiler by setting the `CXX'
  648.           environment variable to `gcc':
  649.                export CXX="gcc"
  650.      Please note that you need to run `configure' again afterward.
  651. File: manual.info,  Node: mit-pthreads,  Next: windows-source-build,  Prev: compilation-problems,  Up: installing-source
  652. 2.8.5 MIT-pthreads Notes
  653. ------------------------
  654. This section describes some of the issues involved in using
  655. MIT-pthreads.
  656. On Linux, you should _not_ use MIT-pthreads.  Use the installed
  657. LinuxThreads implementation instead. See *Note linux::.
  658. If your system does not provide native thread support, you need to
  659. build MySQL using the MIT-pthreads package. This includes older FreeBSD
  660. systems, SunOS 4.x, Solaris 2.4 and earlier, and some others. See *Note
  661. which-os::.
  662. Beginning with MySQL 4.0.2, MIT-pthreads is no longer part of the
  663. source distribution. If you require this package, you need to download
  664. it separately from
  665. `http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz'
  666. After downloading, extract this source archive into the top level of
  667. the MySQL source directory. It creates a new subdirectory named
  668. `mit-pthreads'.
  669.    * On most systems, you can force MIT-pthreads to be used by running
  670.      `configure' with the -with-mit-threads option:
  671.           shell> ./configure --with-mit-threads
  672.      Building in a non-source directory is not supported when using
  673.      MIT-pthreads because we want to minimize our changes to this code.
  674.    * The checks that determine whether to use MIT-pthreads occur only
  675.      during the part of the configuration process that deals with the
  676.      server code. If you have configured the distribution using
  677.      -without-server to build only the client code, clients do not know
  678.      whether MIT-pthreads is being used and use Unix socket connections
  679.      by default. Because Unix socket files do not work under
  680.      MIT-pthreads on some platforms, this means you need to use -h or
  681.      -host when you run client programs.
  682.    * When MySQL is compiled using MIT-pthreads, system locking is
  683.      disabled by default for performance reasons. You can tell the
  684.      server to use system locking with the -external-locking option.
  685.      This is needed only if you want to be able to run two MySQL
  686.      servers against the same data files, which is not recommended.
  687.    * Sometimes the pthread `bind()' command fails to bind to a socket
  688.      without any error message (at least on Solaris). The result is
  689.      that all connections to the server fail. For example:
  690.           shell> mysqladmin version
  691.           mysqladmin: connect to server at '' failed;
  692.           error: 'Can't connect to mysql server on localhost (146)'
  693.      The solution to this is to kill the `mysqld' server and restart
  694.      it. This has happened to us only when we forced the server to shut
  695.      down and then restarted it immediately.
  696.    * With MIT-pthreads, the `sleep()' system call is not interruptible
  697.      with `SIGINT' (break). This is only noticeable when you run
  698.      `mysqladmin --sleep'. You must wait for the `sleep()' call to
  699.      terminate before the interrupt is served and the process stops.
  700.    * When linking, you may receive warning messages like these (at
  701.      least on Solaris); they can be ignored:
  702.           ld: warning: symbol `_iob' has differing sizes:
  703.               (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
  704.           file /usr/lib/libc.so value=0x140);
  705.               /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
  706.           ld: warning: symbol `__iob' has differing sizes:
  707.               (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
  708.           file /usr/lib/libc.so value=0x140);
  709.               /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
  710.    * Some other warnings also can be ignored:
  711.           implicit declaration of function `int strtoll(...)'
  712.           implicit declaration of function `int strtoul(...)'
  713.    * We have not gotten `readline' to work with MIT-pthreads. (This is
  714.      not needed, but may be interesting for someone.)