[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
On Solaris, you may run into trouble even before you get the MySQL
distribution unpacked! Solaris tar
can't handle long file names, 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://www.mysql.com/downloads/os-solaris.html.
Sun native threads only work on Solaris 2.5 and higher. For Version 2.4 and earlier, MySQL will automatically use MIT-pthreads. See section 2.3.5 MIT-pthreads Notes.
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 64bit Solaris binary using gcc
, add -m64
to
CFLAGS
and CXXFLAGS
. Note that 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 -mcpu
flags.
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 older compilers than WorkShop 5.3,
you may have to edit the configure
script to 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
multi-thread option (-mt
):
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:
-Wl,r/full-path-to-libmysqlclient.so
flag rather than with -Lpath
).
libmysqclient.so
to `/usr/lib'.
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:
zlib
from ftp.gnu.org
.
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.
2.6.3.1 Solaris 2.7/2.8 Notes | ||
2.6.3.2 Solaris x86 Notes |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |