注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

node-gyp 编译 libjpeg8,将libjpeg植入nodejs验证码模块ccap  

2013-05-21 14:44:43|  分类: node |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
前阵子开发的nodejs验证码模块ccap,已经有一些用户了,他们反映在部分linux机器上无法安装,特别是使用类似jitusu等云平台的机器。经过测试发现是ccap模块从远端获取libjpeg库然后解压缩编译时出的问题。可能是没有权限去自行make和make install导致的,既然这样我就打算将libjpeg库直接植入ccap模块,让libjpeg和cimg库一起编译。

由于大部分用户的生产环境都是linux,所以这里只打算对linux做libjpeg的支持,windows下用户还是用bmp吧。
首先我们要找到libjpeg需要编译那些文件,打开makefile.in文件,在296行,列举了需要编译的源文件:

# Sources to build library
LIBSOURCES = jaricom.c jcapimin.c jcapistd.c jcarith.c jccoefct.c jccolor.c \
jcdctmgr.c jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c \
jcomapi.c jcparam.c jcprepct.c jcsample.c jctrans.c jdapimin.c \
jdapistd.c jdarith.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c \
jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c jdmaster.c \
jdmerge.c jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c \
jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jquant1.c \
jquant2.c jutils.c jmemmgr.c @MEMORYMGR@.c


# System dependent sources
SYSDEPSOURCES = jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c //拷第一个即可

于是我们只需要把这些文件拷贝出来,这里别自己拷贝啊,用linux的cp命令即可,然后将所有的*.h文件也拷贝到这个文件夹中,我们改名为source文件夹,最后执行一下

gcc -o libjpeg.so -fPIC -shared *.c

发现生成出来的libjpeg.so是可以被我们cimg正常使用的,于是就是体力活了,将上面这些文件全部放入binding.gyp文件中,最后得到一个很长的数组:

["OS==\"linux\"", {
"sources": ["addon/jpeglib/jaricom.c", "addon/jpeglib/jcapimin.c", "addon/jpeglib/jcapistd.c", 
      "addon/jpeglib/jcarith.c","addon/jpeglib/jccoefct.c",
      "addon/jpeglib/jccolor.c","addon/jpeglib/jcdctmgr.c", 
      "addon/jpeglib/jchuff.c", "addon/jpeglib/jcinit.c", "addon/jpeglib/jcmainct.c",
      "addon/jpeglib/jcmarker.c",
      "addon/jpeglib/jcmaster.c", "addon/jpeglib/jcomapi.c", "addon/jpeglib/jcparam.c", 
      "addon/jpeglib/jcprepct.c", "addon/jpeglib/jcsample.c", "addon/jpeglib/jctrans.c",
      "addon/jpeglib/jdapimin.c", "addon/jpeglib/jdapistd.c",
      "addon/jpeglib/jdarith.c", "addon/jpeglib/jdatadst.c",
      "addon/jpeglib/jdatasrc.c", "addon/jpeglib/jdcoefct.c",
      "addon/jpeglib/jdcolor.c", "addon/jpeglib/jddctmgr.c",
      "addon/jpeglib/jdhuff.c", "addon/jpeglib/jdinput.c",
      "addon/jpeglib/jdmainct.c", "addon/jpeglib/jdmarker.c",
      "addon/jpeglib/jdmaster.c", "addon/jpeglib/jdmerge.c",
      "addon/jpeglib/jdpostct.c", "addon/jpeglib/jdsample.c",
      "addon/jpeglib/jdtrans.c", "addon/jpeglib/jerror.c",
      "addon/jpeglib/jfdctflt.c","addon/jpeglib/jfdctfst.c",
      "addon/jpeglib/jfdctint.c", "addon/jpeglib/jidctflt.c", 
      "addon/jpeglib/jidctfst.c", "addon/jpeglib/jidctint.c",
      "addon/jpeglib/jquant1.c", "addon/jpeglib/jquant2.c", 
      "addon/jpeglib/jutils.c", "addon/jpeglib/jmemmgr.c",
      "addon/jpeglib/jmemnobs.c",
      "addon/hcaptha.cc" ,"addon/cap.cc"],
"libraries": [],
"cflags_cc": ["-fexceptions","-Dcimg_display=0","-Dcimg_use_jpeg","-L/usr/X11R6/lib","-lm","-lpthread","-lX11"]
            }]

于是我们进行编译,node-gyp rebuild就可以正常的在cimg库中使用libjpeg库的东西了。

轻量级便携nodejs验证码,ccap安装方法

npm install ccap

项目地址

  评论这张
 
阅读(2714)| 评论(4)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016