MySQL的客户端程序可以静态方式编译, 也就是将客户端程序和MySQL的客户端链接成一个可执行文件, 这样发布程序时就不需要额外安装MySQL客户端了, 比如让Perl支持MySQL的数据库, 就不想在每台机器上安装一个MySQL客户端, 只要将Perl拷过去就以使用.
最好是找一台干静的版本较低的机器, 如没有新机器, 致少要编译一个独立的MySQL客户端, 不要和编译服务器端的混在一起. 取得并解压MySQL源代码后, 执行如下命令进行编译配置工作.
./configure –prefix=/usr/mysqlclient \
–without-debug \
–without-bench \
–enable-thread-safe-client \
–enable-assembler \
–with-charset=utf8 \
–with-extra-charsets=utf8,gbk \
–with-collation=utf8_bin \
–without-bench \
–with-lib-ccflags=-fPIC \
–disable-shared –with-pic \
–without-server \
–with-mysqld-user=oracle \
–without-docs \
–without-man
然后下载DBD::MySQL的源代码, 执行如下命令进行编译配置.
perl Makefile.PL –mysql_config=/usr/mysqlclient/bin/mysql_config
make
make install
这样编译生成的就是静态的DBD::MySQL模块, 可以用ldd查看.
$ ldd mysql.so
libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a95729000)
/lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)
一开始在不干净(编译过Server版本)的源代码下编译了几次, 总是出现链接上的问题, 清干净就好了.