snow888 发表于 2012-04-23 17:07

在 SCO OpenServer 5.0.x 上编译 mysql 5.0.27

没办法啊。

编译需要的系统环境。

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 所需要的结果造成的。

changsha 发表于 2012-04-25 18:10

sco还没灭绝啊?

光速 发表于 2012-04-28 09:10

在SCO OpenServer 5.0.x 上还没成功编译过mysql5;

theperl 发表于 2012-05-07 10:02

神贴留名。

ulovko 发表于 2012-06-13 12:38

多谢分享 非常好!^_^

snow888 发表于 2012-06-13 12:40

回复 5# ulovko


    晕,这玩意儿你还有兴趣啊。

我是没办法,只要有一点办法,我都不会再干这傻事的。
页: [1]
查看完整版本: 在 SCO OpenServer 5.0.x 上编译 mysql 5.0.27