( Solaris

Info Catalog ( Mac OS X ( Operating System Specific Notes ( BSD Notes
 2.12.3 Solaris Notes
 On Solaris, you may run into trouble even before you get the MySQL
 distribution unpacked!  Solaris `tar' can't handle long filenames, so
 you may see an error like this when you unpack MySQL:
      x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,
      informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
      tar: directory checksum error
 In this case, you must use GNU `tar' (`gtar') to unpack the
 distribution.  You can find a precompiled copy for Solaris at
 Sun native threads work only on Solaris 2.5 and higher.  For Version
 2.4 and earlier, MySQL automatically uses 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:
 If you are using Solaris on a SPARC, the recommended compiler is `gcc'
 2.95.2 or 3.2. You can find this at `'.  Note that
 `egcs' 1.1.1 and `gcc' 2.8.1 don't 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 \
 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. This works only with MySQL 4.0 and up; MySQL 3.23 does not
 include the required modifications to support this.
 In the MySQL benchmarks, we got a 4% speedup on an UltraSPARC when using
 Forte 5.0 in 32-bit mode compared to using `gcc' 3.2 with the `-mcpu'
 If you create a 64-bit `mysqld' binary, it is 4% slower than the 32-bit
 binary, but can handle more threads and memory.
 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 `', you may
 have many problems.  To avoid this, you should recompile `gcc' and GNU
 `binutils' on the machine where you will be 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 will break all programs that use threads, and
 possibly other programs!
 Solaris doesn't provide static versions of all system libraries
 (`libpthreads' and `libdl'), so you can't compile MySQL with
 `--static'.  If you try to do so, you will get one of the following
      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: fatal:
      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/' flag
      rather than with `-Lpath').
    * Copy `' to `/usr/lib'.
    * Add the pathname of the directory where `' 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 `'.
    * 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 will
 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'


* Solaris 2.7                 Solaris 2.7/2.8 Notes
* Solaris x86                 Solaris x86 Notes
Info Catalog ( Mac OS X ( Operating System Specific Notes ( BSD Notes
automatically generated byinfo2html