DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) solaris

Info Catalog (mysql.info) mac-os-x (mysql.info) operating-system-specific-notes (mysql.info) bsd-notes
 
 2.12.3 Solaris Notes
 --------------------
 

Menu

 
* solaris-2-7                  Solaris 2.7/2.8 Notes
* solaris-x86                  Solaris x86 Notes
 
 On Solaris, you may run into trouble even before you get the MySQL
 distribution unpacked, as the Solaris `tar' cannot handle long
 filenames. This means that you may see errors when you try to unpack
 MySQL.
 
 If this occurs, you must use GNU `tar' (`gtar') to unpack the
 distribution. You can find a precompiled copy for Solaris at
 `http://dev.mysql.com/downloads/os-solaris.html'.
 
 Sun native threads work only on Solaris 2.5 and higher. For Solaris 2.4
 and earlier, MySQL automatically uses MIT-pthreads.  See 
 mit-pthreads.
 
 If you get the following error from `configure', it means that you have
 something wrong with your compiler installation:
 
      checking for restartable system calls... configure: error can not
      run test programs while cross compiling
 
 In this case, you should upgrade your compiler to a newer version. You
 may also be able to solve this problem by inserting the following row
 into the `config.cache' file:
 
      ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
 
 If you are using Solaris on a SPARC, the recommended compiler is `gcc'
 2.95.2 or 3.2. You can find this at `http://gcc.gnu.org/'. Note that
 `egcs' 1.1.1 and `gcc' 2.8.1 do not work reliably on SPARC.
 
 The recommended `configure' line when using `gcc' 2.95.2 is:
 
      CC=gcc CFLAGS="-O3" \
      CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
      ./configure --prefix=/usr/local/mysql --with-low-memory \
          --enable-assembler
 
 If you have an UltraSPARC system, you can get 4% better performance by
 adding -mcpu=v8 -Wa,-xarch=v8plusa to the `CFLAGS' and `CXXFLAGS'
 environment variables.
 
 If you have Sun's Forte 5.0 (or newer) compiler, you can run
 `configure' like this:
 
      CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
      CXX=CC CXXFLAGS="-noex -mt" \
      ./configure --prefix=/usr/local/mysql --enable-assembler
 
 To create a 64-bit binary with Sun's Forte compiler, use the following
 configuration options:
 
      CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
      CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
      ./configure --prefix=/usr/local/mysql --enable-assembler
 
 To create a 64-bit Solaris binary using `gcc', add -m64 to `CFLAGS' and
 `CXXFLAGS' and remove -enable-assembler from the `configure' line.
 
 In the MySQL benchmarks, we obtained a 4% speed increase on UltraSPARC
 when using Forte 5.0 in 32-bit mode, as compared to using `gcc' 3.2
 with the -mcpu flag.
 
 If you create a 64-bit `mysqld' binary, it is 4% slower than the 32-bit
 binary, but can handle more threads and memory.
 
 When using Solaris 10 for x86_64, you should mount any filesystems on
 which you intend to store `InnoDB' files with the `forcedirectio'
 option. (By default mounting is done without this option.) Failing to
 do so will cause a significant drop in performance when using the
 `InnoDB' storage engine on this platform.
 
 If you get a problem with `fdatasync' or `sched_yield', you can fix
 this by adding `LIBS=-lrt' to the `configure' line
 
 For compilers older than WorkShop 5.3, you might have to edit the
 `configure' script. Change this line:
 
      #if !defined(__STDC__) || __STDC__ != 1
 
 To this:
 
      #if !defined(__STDC__)
 
 If you turn on `__STDC__' with the -Xc option, the Sun compiler can't
 compile with the Solaris `pthread.h' header file. This is a Sun bug
 (broken compiler or broken include file).
 
 If `mysqld' issues the following error message when you run it, you
 have tried to compile MySQL with the Sun compiler without enabling the
 -mt multi-thread option:
 
      libc internal error: _rmutex_unlock: rmutex not held
 
 Add -mt to `CFLAGS' and `CXXFLAGS' and recompile.
 
 If you are using the SFW version of `gcc' (which comes with Solaris 8),
 you must add `/opt/sfw/lib' to the environment variable
 `LD_LIBRARY_PATH' before running `configure'.
 
 If you are using the `gcc' available from `sunfreeware.com', you may
 have many problems.  To avoid this, you should recompile `gcc' and GNU
 `binutils' on the machine where you are running them.
 
 If you get the following error when compiling MySQL with `gcc', it
 means that your `gcc' is not configured for your version of Solaris:
 
      shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
      ./thr_alarm.c: In function `signal_hand':
      ./thr_alarm.c:556: too many arguments to function `sigwait'
 
 The proper thing to do in this case is to get the newest version of
 `gcc' and compile it with your current `gcc' compiler. At least for
 Solaris 2.5, almost all binary versions of `gcc' have old, unusable
 include files that break all programs that use threads, and possibly
 other programs as well.
 
 Solaris does not provide static versions of all system libraries
 (`libpthreads' and `libdl'), so you cannot compile MySQL with -static.
 If you try to do so, you get one of the following errors:
 
      ld: fatal: library -ldl: not found
      undefined reference to `dlopen'
      cannot find -lrt
 
 If you link your own MySQL client programs, you may see the following
 error at runtime:
 
      ld.so.1: fatal: libmysqlclient.so.#:
      open failed: No such file or directory
 
 This problem can be avoided by one of the following methods:
 
    * Link clients with the -Wl,r/full/path/to/libmysqlclient.so flag
      rather than with -Lpath).
 
    * Copy `libmysqclient.so' to `/usr/lib'.
 
    * Add the pathname of the directory where `libmysqlclient.so' is
      located to the `LD_RUN_PATH' environment variable before running
      your client.
 
 If you have problems with `configure' trying to link with -lz when you
 don't have `zlib' installed, you have two options:
 
    * If you want to be able to use the compressed communication
      protocol, you need to get and install `zlib' from `ftp.gnu.org'.
 
    * Run `configure' with the -with-named-z-libs=no option when building
      MySQL.
 
 If you are using `gcc' and have problems with loading user-defined
 functions (UDFs) into MySQL, try adding -lgcc to the link line for the
 UDF.
 
 If you would like MySQL to start automatically, you can copy
 `support-files/mysql.server' to `/etc/init.d' and create a symbolic
 link to it named `/etc/rc3.d/S99mysql.server'.
 
 If too many processes try to connect very rapidly to `mysqld', you
 should see this error in the MySQL log:
 
      Error in accept: Protocol error
 
 You might try starting the server with the -back_log=50 option as a
 workaround for this.  (Use -O back_log=50 before MySQL 4.)
 
 Solaris doesn't support core files for `setuid()' applications, so you
 can't get a core file from `mysqld' if you are using the -user option.
 
Info Catalog (mysql.info) mac-os-x (mysql.info) operating-system-specific-notes (mysql.info) bsd-notes
automatically generated byinfo2html