cc时,你也可以试试这样运行configure:
shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure …… 如果你的信号有问题(MySQL出人意料地在高负载下死掉),你可能找到了一个线程和信号有关的OS错误。在这种情况下,你可以告诉MySQL如下配置以不使用信号:
shell> CFLAGS=-DDONT_USE_THR_ALARM CXXFLAGS=-DDONT_USE_THR_ALARM ./configure ...
这不影响MySQL性能,但是有负面效应,就是你不能用mysqladmin kill或mysqladmin shutdown杀死在一个连接上“睡眠”的客户。相反,当客户发出下一个命令时,它将死掉。
4.11.8 SGI-Irix 注意事项 你可能需要在运行configure后且在编译前去掉在“config.h”里面一些东西的定义(underfine)。
在一些Irix实现中,alloca()函数被破坏。如果mysqld服务器死于一些SELECT语句,把“config.h”定义HAVE_ALLOC和HAVE_ALLOCA_H的行删除即可。如果mysqladmin create不工作,把“config.h”定义HAVE_READDIR_R的行删除,你也可能必须删除HAVE_TERM_H行。
SGI推荐你将本页上的所有补丁作为一个整体来安装:http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html
最小地,你应该安装最新的核心卷(rollup)、最新的rld卷和最新的libc卷。
很明确,对于pthreads支持,你需要本页上所有的POSIX补丁:
http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html
如果在编译“mysql.cc”时,你得到类似于下面的错误:
"/usr/include/curses.h", line 82: error(1084): invalid combination of type
那么,在你的MySQL源代码树的顶级目录打下列命令:
shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h shell> make
应该也有安排上的问题报告。如果只有一个线程正在运行,事情会变慢的。通过启动另外一个客户来避免它,这可以导致此后其他线程的执行速度增加2到10倍。这是Irix线程难以理解的问题;你可能必须临时准备找出解决方案直到它能被修正。
如果你正在用gcc编译,你可以使用下列configure命令:
shell> CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-thread-safe-client --with-named-thread-libs=-lpthread
4.11.9 FreeBSD 注意事项 对于运行MySQL,FreeBSD 3.x是被推荐的,因为其线程包是更加完整。
最容易因此是比较受喜欢的安装方法是使用mysql服务者和 mysql客户的移植,可从http://www.freebsd.org得到。
使用这些给你的东西:
一个全优化的工作在你的FreeBSD版本上的MySQL。 自动配置和构造。 启动脚本安装在/usr/local/etc/rc.d。 用pkg_info -L察看哪个文件被安装的能力,并且如果你在那台机器上不再想要MySQL,用pkg_delete完全删除它们。 建议在FreeBSD 2.x版上使用 MIT-pthreads,在版本3和以上版本用原生线程。在一些2.2.x的以后版本使用原生线程运行是可能的,但是你可能碰到mysqld关掉的问题。
确定让你的名字解析程序安装正确,否则当连接mysqld时,你可能会经历解析延时或失败。
保证在“/etc/hosts”文件中的localhost入口是正确的(否则你与数据库连接时将有问题)。“/etc/hosts”文件应该以一行开始:
127.0.0.1 localhost localhost.your.domain 如果你注意到configure使用 MIT-pthreads,你应该阅读MIT-pthreads注意事项,见4.9 MIT-pthreads 注意事项。
如果你从make install得到一个它不能找到“/usr/include/pthreads”的错误,configure没有检测出你需要 MIT-pthreads。通过执行这些命令修正它:
shell> rm config.cache shell> ./configure --with-mit-threads
FreeBSD make的行为与make GNU略有不同。如果你有make相关问题,你应该安装GNU make。
FreeBSD也已知有一个非常低的缺省文件句柄限制。见18.11 文件没找到。去掉在safe_mysqld中的ulimit -n 小节的注释或在/etc/login.conf为mysqld用户提高限制(并用cap_mkdb /etc/login.conf重建它),如果你不使用缺省,也要保证你为此用户在口令文件(用法:chpass mysqld-user-name )。
你用SELECT NOW()返回GMT形式的值而不是你的本地时间,如果有这样的问题,你必须设定TZ环境变量为你的当前时区的。这应该设置服务器运行的环境,例如在safe_mysqld或mysql.server里。
为了得到一个安全并且稳定的系统,你应该只仅使用被标记为-STABLE的FreeBSD内核。
4.11.10 NetBSD 注意事项 为了NetBSD上编译,你需要GNU make,否则当make试图在C++文件上运行lint时,编译将崩溃。
4.11.11 OpenBSD 2.5 注意事项 在OpenBSD 2.5上,你可以用下列选项编译带原生线程的MySQL:
CFLAGS=-pthread CXXFLAGS=-pthread ./configure -- with-mit-threads=no 4.11.12 BSD/OS 注意事项 4.11.12.1 BSD/OS 2.x 注意事项 如果在编译MySQL时,你得到下列错误, 你对虚存的ulimit值是太低了:
item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)'''': item_func.h:28: virtual memory exhausted make[2]: *** [item_func.o] Error 1
试试使用ulimit -v 80000并再运行make。如果这还不行并且你正在使用bash,试试换到csh或sh;一些BSDI用户报告了与bash和ulimit有关问题。
如果你正在使用gcc,你也可能必须为configure使用--with-low-memory标志才能编译“sql_yacc.cc”。
你用SELECT NOW()返回GMT形式的值而不是你的本地时间,如果有这样的问题,你必须设定TZ环境变量为你的当前时区的。这应该为服务器运行的环境设置,例如在safe_mysqld或mysql.server里。
4.11.12.2 BSD/OS 3.x 注意事项 升级到BSD/OS 3.1。如果那不可能,安装BSDI patch M300-038。
在配置MySQL时,使用下列命令:
shell> env CXX=shlicc++ CC=shlicc2 ./configure --prefix=/usr/local/mysql --localstatedir=/var/mysql --without-perl --with-unix-socket-path=/var/mysql/mysql.sock
下列也已知可用:
shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-unix-socket-path=/var/mysql/mysql.sock
如果你愿意,你可以改变目录地点,或不指定任何地点而使用缺省。
如果你在重负再下的性能有问题,试试使用对safe_mysqld使用--skip-thread-priority选项!这将以相同优先级运行所有线程;在BSDI 3.1上,这得到较好的性能(至少直到BSDI修正其线程调度程序)。
如果你在编译时得到virtual memory exhausted错误,试试使用ulimit -v 80000并再运行make。如果这还不行并且你正在使用bash,试试换到csh或sh;一些BSDI用户报告了与bash和ulimit有关问题。
4.11.12.3 BSD/OS 4.x 注意事项 BSDI 4.x有一些线程有关的错误。如果你想要在这上面使用MySQL,你应该安装所有与线程相关的补丁,至少应该安装M400-023。
4.11.13 SCO 注意事项 当前的移植仅在“sco3.2v5.0.4”和“sco3.2v5.0.5”系统上被测试,在“sco 3.2v4.2”一个移植也有很大进展。
此时在OpenServer上推荐的编译器是gcc 2.95.2,用它你应该能编译MySQL:
CC=gcc CXX=gcc ./configure ... (options)
对于OpenServer 5.0.X,你需要在Skunkware 95上使用GDS(95q4c),这是必要的,因为在Skunkware 97上的GNU gcc 2.7.2 没有GNU as。你也可以使用egcs1.1.2或更新:http://www.egcs.com/。如果你正在使用egcs1.1.2,你必须执行下列命令: shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
对该产品和开发系统,你需要GCC 2.5.?的移植。他们在这个SCO UNIX版本上是必需的,你不能只使用GCC Dev系统。 你应该得到 FSU Pthreads 包并且首先安装它,它可在http://www.cs.wustl.edu/~ schmidt/ACE_wrappers/FSU-threads.tar.gz找到。你也可以从ftp://www.mysql.com/pub/mysql/Downloads/SCO/FSU-threads-3.5c.tar.gz得到一个预编译的包。 FSU Pthreads能用带tcpip的SCO UNIX 4.2编译,或OpenServer 3.0或Open Desktop 3.0(OS 3.0 ODT 3.0),安装带有使用一个GCC 2.5.X ODT的SCO开发系统,或对OS 3.0你将需要一个GCC 2.5.?的良好移植。 没有一个良好的移植会有很多问题。对这个产品的移植需要SCO UNIX开发系统,没有它,你正缺少所需的库和链接器。 为了在你的系统上构造FSU Pthreads,做下列工作: 在“thread/src”目录下运行./configure并且选择SCO OpenServer选项。这个命令拷贝“Makefile.SCO5”到“Makefile”。 运行make。 为了在缺省的“/usr/include”目录安装,作为root登录,然后cd 到“thread/src”目录,并运行make install。 记得在制作MySQL时要使用GNU make。 在OSR 5.0.5上,你应该使用下列配置命令行: shell> CC="gcc -DSCO" CXX="gcc -DSCO" ./configure
需要-DSCO帮助配置正确检测一些线程函数。如果你忘记-DSCO,在编译时,你将得到下列错误消息: my_pthread.c: In function `my_pthread_mutex_init'''': my_pthread.c:374: `pthread_mutexattr_default'''' undeclared (first use this function)
如果你不是作为root启动safe_mysqld,你将可能每进程只有缺省的110个打开文件。mysqld将在日志文件写下关于此的注解。 用SCO 3.2 V5.0.5,你应该使用一个FSU Pthreads版本3.5c或更新。下列configure命令应该工作: shell> CC="gcc -belf" ./configure --prefix=/usr/local/mysql --disable-shared
用SCO 3.2V4.2,你应该使用一个FSU Pthreads版本3.5c或更新。下列configure命令应该工作: shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" ./configure --with-debug --prefix=/usr/local/mysql --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" --with-named-curses-libs="-lcurses"
你可能得到一些包括文件的某些问题。在这种情况下,你能在ftp://www.mysql.com/pub/mysql/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz找到新的SCO特定的包括文件。你应该在你的MySQL源代码树的“include”目录下打开这个文件。
SCO开发注意事项:
MySQL应该自动地检测FSU Pthreads并且用-lgthreads -lsocket -lgthreads选项链接mysqld。 SCO开发库在FSU Pthreads是重入(reentrant)的。SCO宣称它的库函数是重入的,因此他们一定在FSU Pthreads中是重入的。在 OpenServer上的 FSU Pthreads 试图使用SCO方案制作重入的库。 FSU Pthreads(至少在www.mysql.com的版本)链接了GNU malloc,如果你甭到内存使用的问题,确定“gmalloc.o”被包含在“libgthreads.a”和“libgthreads.so”中。 在FSU Pthreads中,下列系统调用是pthreads感知的:read()、write()、getmsg()、connect()、accept()、select()和wait()。 如果你想要在SCO上安装DBI,你必须编辑在DBI-xxx和每个子目录下的“Makefiles”:
OLD: NEW: CC = cc 上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 |