(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