• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Gearman::XS在Centos下的编译安装方法

    本文简述了Gearman::XS在Centos下编译安装方法,供大家参考学习一下!

    目前Gearman能够支持各种语言,其官网的描述如下:
     

    Language Bindings/Drivers/Frameworks
    Select your language – cross links to download section which details all your options.
    C, C#/.NET, Go, Java, Lisp, Nodejs, PHP, Perl, Python, Ruby, Database UDFs.
    

     
    个人尝试了C、python、perl三种语言的API,感觉perl的API功能相对来说齐全一点。Gearman::XS是perl的开源支持。其链接如下:http://search.cpan.org/~krow/Gearman-XS/

    在RHEL5.7下安装的Gearman::XS,中间会出现各种问题,此处给出这些问题的解决方法供大家参考。

    首先,我使用了cpanm来安装Gearman::XS,结果如下:

    [@localhost yunfei]# cpanm Gearman::XS
    --> Working on Gearman::XS
    Fetching http://www.cpan.org/authors/id/K/KR/KROW/Gearman-XS-0.15.tar.gz ... OK
    Configuring Gearman-XS-0.15 ... OK
    Building and testing Gearman-XS-0.15 ... FAIL
    ! Installing Gearman::XS failed. See /root/.cpanm/work/1392343258.18128/build.log for details. Retry with --force to force install it.
    

    显然force强制安装肯定是不行的,所以就找原因。查看 /root/.cpanm/work/1392343258.18128/build.log文件,发现其中有如下的提示:

    gcc -c -Wall -Wundef -Wno-shadow -Wmissing-prototypes -fdiagnostics-show-option -Wformat=2 -Wstrict-aliasing -Wextra -Wmissing-declarations -Wcast-align -Wswitch-default -Wswitch-enum -Wno-undef -Wno-unused-value -Wno-unused-variable -Wno-unused-parameter -Wno-format-invalid-specifier -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"0.15\" -DXS_VERSION=\"0.15\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" XS.c
    cc1: error: unrecognized command line option "-Wno-format-invalid-specifier"
    make: *** [XS.o] Error 1
    -> FAIL Installing Gearman::XS failed.
    
    

    看到是在编译的时候出了问题,所以,咱们切换到它的编译目录(即 /root/.cpanm/work/1392343258.18128/这个目录)

    cd /root/.cpanm/work/1392343258.18128/Gearman-XS-0.15
    
    

    然后执行make命令,就可以看到上面报的编译错误了。ok,下面就着手解决它。

    vi Makefile
    
    

    可以找到:

    CCFLAGS = -Wall -Wundef -Wno-shadow -Wmissing-prototypes -fdiagnostics-show-option -Wformat=2 -Wstrict-aliasing -Wextra -Wmissing-declarations -Wcast-align -Wswitch-default -Wswitch-enum -Wno-undef -Wno-unused-value -Wno-unused-variable -Wno-unused-parameter -Wno-format-invalid-specifier
    
    

    删掉最后的“-Wno-format-invalid-specifier”这个选项,然后保存退出,再次执行make。
     
    会发现报出如下错误:

    In file included from XS.xs:11:
    gearman_xs.h:18:36: error: libgearman-1.0/gearman.h: No such file or directory
    XS.c: In function 'XS_Gearman__XS_strerror':
    XS.c:229: error: 'gearman_return_t' undeclared (first use in this function)
    XS.c:229: error: (Each undeclared identifier is reported only once
    XS.c:229: error: for each function it appears in.)
    XS.c:229: error: expected ';' before 'rc'
    XS.xs:82: warning: implicit declaration of function 'gearman_strerror'
    XS.xs:82: error: 'rc' undeclared (first use in this function)
    XS.xs:82: warning: assignment makes pointer from integer without a cast
    make: *** [XS.o] Error 1
    
    

    很明显,是找不到gearman.h,也就是说需要gearman-devel,正常情况下通过yum直接安装gearman-devel包就可以解决这个问题,但是,我的rhel是手动安装的Gearman-1.1.11版本,和yum安装的版本不一致,所以,再次打开并修改Makefile。

    找到INC以及LDDLFLAGS,修改为如下内容:

    LDDLFLAGS = -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -L/usr/local/gearman/lib/ -lgearman
     
    INC = -I/usr/local/gearman/include/ -L/usr/local/gearman/lib/
    
    

    可以看到就是加入了Gearman的incule以及lib相关的东西。保存退出Makefile,再次执行make,顺利通过,然后make install就安装完毕了。

    您可能感兴趣的文章:
    • php使用gearman进行任务分发操作实例详解
    • python基于json文件实现的gearman任务自动重启代码实例
    • gearman中worker常驻后台,导致MySQL server has gone away的解决方法
    • PHP使用gearman进行异步的邮件或短信发送操作详解
    • gearman + mysql方式实现持久化操作示例
    • gearman管理工具GearmanManager的安装与php使用方法示例
    • PHP并发多进程处理利器Gearman使用介绍
    • gearman队列持久化引发的问题及解决方法
    • gearman的安装启动及python API使用实例
    • rhel5.7下安装gearmand及启动的方法
    • gearman中任务的优先级和返回状态实例分析
    上一篇:gearman队列持久化引发的问题及解决方法
    下一篇:Shell脚本批量修改文件后缀名代码分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Gearman::XS在Centos下的编译安装方法 Gearman,在,Centos,下,的,编译,