perl静态编译DBD

编译DBD

  项目中经常使用perl,但perl在连接数据库时,需要依赖DBI,DBD驱动,但默认安装DBD驱动时,需要依赖数据库的lib库。

  比如perl连接MySQL,需要安装MySQL client。

 

下面使用静态编译,把DBI, DBD, MySQL client的libclient库静态编译在一起。这样,分发到机器上,就可以使用。

  1. 编译perl, DBI

    这一步没有依赖,下载最新的perl,DBI,按照make&&make install安装到/home/myperl目录。

 2. 安装MySQL

    编译最新的MySQL,这里只需要静态编译出libclient.a就可以了,不需要so文件。

   3. 静态编译DBD

    使用/home/myperl的perl来编译

    /home/myperl/bin/perl Makefile.PL --mysql_config=/usr/local/bin/mysql_config

    这样编译出来的/home/myperl是静态编译了DBD的版本,直接分发到目标机器上使用就可以了。

     可以使用ldd mysql.so文件查看依赖。

使用的时候,pl脚本的解释器指向 #!/home/myperl/bin/perl

 

rpm打包

  

由于环境需要rpm包来使用,尝试写一个简单的makefile,spec文件,用rpmbuild来打一个rpm包。

步骤:

  1. 准备makefile:
test : test.o
cc -o test test.o

test.o : test.c
        cc -c test.c

clean :  
        rm -rf test.o test

install :
        install -d ${DESTDIR}/${PREFIX_PERL}
        install -d ${DESTDIR}/${PREFIX_MS}
        install -m 755 test ${DESTDIR}/${PREFIX_MS}
        cp -r bin/ ${DESTDIR}/${PREFIX_PERL} 
        cp -r lib/ ${DESTDIR}/${PREFIX_PERL}
        cp -r man/ ${DESTDIR}/${PREFIX_PERL}

 

2. 准备spec文件

  

Name:myperl
Version:1.0.0
Release:%(echo $RELEASE)%{?dist}
License:GPL

Group:Application
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
AutoReqProv: no   :去掉所有依赖检查和提供
Summary:myperl

%description

%prep

%build
cd $OLDPWD/../
make

%install
cd $OLDPWD/../
make install DESTDIR=$RPM_BUILD_ROOT PREFIX=/home/myperl

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
/home/myperl/*
%changelog

3. build rpm包

  

  rpmbuild myperl.spec

  打出来的就是myperl-1.0.0-1.el6.x86_64.rpm, 这样就可以直接使用了,不依赖任何lib库。

 

posted @ 2014-06-19 21:16  xpchild  阅读(521)  评论(0编辑  收藏  举报