perl静态编译DBD
编译DBD
项目中经常使用perl,但perl在连接数据库时,需要依赖DBI,DBD驱动,但默认安装DBD驱动时,需要依赖数据库的lib库。
比如perl连接MySQL,需要安装MySQL client。
下面使用静态编译,把DBI, DBD, MySQL client的libclient库静态编译在一起。这样,分发到机器上,就可以使用。
- 编译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包。
步骤:
- 准备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库。