| [ < ] | [ > ] | [ << ] | [ 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] | [ ? ] |