- 论坛徽章:
- 1
|
没办法啊。
编译需要的系统环境。
gwxlibs-1.3.1Ba 、gnutools-5.0.7Kj 、fsu-threads-3.14 、openssl-0.9.7g
==========================================================================
下载并展开 mysql-5.0.27-source.tar.bz2 软件包。
$ bzip2 -d mysql-5.0.27-source.tar.bz2
$ tar xvf mysql-5.0.27-source.tar
创建编译目录
$ mkdir mysql_build
创建 fsu-threads-3.14 的链接。
(由于 fsu-threads-3.14 的安装包默认安装没有在 /usr/include 和 /usr/lib 目录下建立相应的链接,系统编译环境是找不到 fsu-threads 的头文件和链接库文件的,这需要我们手工调整。
# cd /usr/lib
# ln -sf /opt/K/SCO/FSUthreads/3.14/usr/lib/FSU/libgthreads.a libgthreads.a
# ln -sf /opt/K/SCO/FSUthreads/3.14/usr/lib/FSU/libgthreads.so libgthreads.so
# cd /usr/include
# ln -sf /opt/K/SCO/FSUthreads/3.14/usr/include/FSU/pthread pthread
# ln -sf /opt/K/SCO/FSUthreads/3.14/usr/include/FSU/pthread.h pthread.h
调整系统编译环境。
由于 gwxlibs-1.3.1Ba 、fsu-threads-3.14 等与系统原生的编译环境有冲突,需要我们进行调整,调整内容如下:
修改 /usr/include/sys/types.h 文件。将其中与 pthread.h 有重复的定义全部删除( 我是用 /* */ 来注释起来的,也可以用 #ifdef 0 和 #endif 来处理,看自己的习惯吧 )
修改 /usr/include/sys/socket.h 文件,在其中加入三个定义,内容如下:- #ifndef SHUT_RD
- #define SHUT_RD 0x00
- #endif
- #ifndef SHUT_WR
- #define SHUT_WR 0x01
- #endif
- #ifdef SHUT_RDWR
- #define SHUT_RDWR 0x02
- #endif
复制代码 修改 /usr/include/pthread/signal.h 头文件,将其中的 timespces 结构定义删除(有重复定义)。
调整编译环境
# cd /usr/gnu/bin
#ln -sf gcc elf-gcc-2.95.3
# cd /usr/gnu/lib/gcc-lib
# ln -sf i586-pc-sco3.2v5.0 elf
进入到我们的编译目录,配置编译环境(建议编写一个脚本,比如 build.sh )- CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium -felide-constructors" \
- ../mysql-5.0.27/configure --prefix=/usr/local/mysql \
- --with-extra-charsets=complex \
- --enable-thread-safe-client \
- --enable-local-infile \
- --with-named-z-libs=no \
- --enable-thread-safe-client \
- --disable-shared \
- --with-innobase \
- --with-vio
复制代码 编译 mysql
编译的过程中会有几个错误,根据编译过程调整如下。
出现 my_init.lo 无法找到的时候,请进入 libmysql 目录,执行 make ,然后将该目录下的 .lo 和 .o 拷贝到 ../libmysql_r 目录下。
然后再次回到我们的编译主目录下,执行 make
出现 mtunx_pthread 的几个函数找不到的时候,请修改 tools/Makefile , 在其中的 LDADD 参数中加入如下内容:
$(top_builddir)/mysys/libmysys.a
然后再次编译即可。
==================================================================
需要说明的问题。
不能安装 gwxlibs-2.1.0Ba 及以上的版本,否则你的 mysql 能顺利编译,但是却无法正常运行。由于 mysql 不能采用静态方式进行编译,估计可能是动态库中的某些函数的执行及返回值不是 mysql 5.0.27 所需要的结果造成的。
|
|