(mysql.info.gz) Solaris
Info Catalog
(mysql.info.gz) Mac OS X
(mysql.info.gz) Operating System Specific Notes
(mysql.info.gz) 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
`http://dev.mysql.com/downloads/os-solaris.html'.
Sun native threads work only on Solaris 2.5 and higher. For Version
2.4 and earlier, MySQL automatically uses MIT-pthreads.
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 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 \
--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. 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'
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.
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 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
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 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'
option.
Menu
* Solaris 2.7 Solaris 2.7/2.8 Notes
* Solaris x86 Solaris x86 Notes
Info Catalog
(mysql.info.gz) Mac OS X
(mysql.info.gz) Operating System Specific Notes
(mysql.info.gz) BSD Notes
automatically generated byinfo2html