Windows系统编译制作SpiderMonkey最新版mozjs-31.2.0版本

来源:互联网 发布:cf数据异常23 0 编辑:程序博客网 时间:2024/05/22 16:40


如何让我们的c++程序可以支持脚本,尤其是支持JavaScript是件很有意思的事情的,那样可以为软件的灵活性,扩展性提供可能。你可能会说用JavaScript 引擎,对,JavaScript 引擎有很多,有Google v8,spiderMonkey等,虽然说spiderMonkey比Google v8速度上差了点,但也是各有千秋。要想用SpiderMonkey,就要首先对它进行编制制作。SpiderMonkey是Mozilla项目的一部分,用C语言写成,是负责执行JavaScript脚本的引擎。它是以源代码形式发布的,因此你必须自己编译它。SpiderMonkey也可以在Macintosh和Unix上使用,想了解如何在这些平台上进行编译请阅读Readme.html,当然都是英文的。如果你在百度上搜索,你搜到的已经是过去的老黄历了,不适用现在的新版本了。本人最近研究在研究这款JavaScript 引擎,所以把我在Windows系统的编译过程写下来供大家参考:
第一步,下载安装相关工具包或源码及准备工作:
1:我电脑上安装的vs2013,所以请先把把Visual Studio的编译命令文件所在目录写到环境变量PATH中去。例如,我的Visual Studio 2013是D:\Program Files\Microsoft Visual Studio 12.0\VC\bin。
2:SpiderMonkey源码:https://people.mozilla.org/~sstangl/mozjs-31.2.0.rc0.tar.bz2。解压生成C:\mozjs-31.2.0目录。
3:Mozilla制作工具包MozillaBuild:https://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe,下载后运行这个MozillaBuildSetup-Latest.exe,安装到C:\mozilla-build。
第二步,编译NSPR:
在Windows系统中编译spiderMonkey必须要依靠nspr,为什么需要nspr?因为编译spidermonkey的源码需要的头文件都在这个nspr里,还有就是要用到nspr编译出来的库文件。所以NSPR是必须的,而且也以源代码形式发布的,也要编译。下载NSPR的最新版跟以前有所不同,打开第一步的第3小步骤生成的C:\mozilla-build目录,里面有几个批处理文件。
1:我选择start-shell-msvc2013.bat,双击运行。
2:让后输入hg clone https://hg.mozilla.org/projects/nspr /c/nspr/mozilla/nsprpub命令,注意/c/nspr/mozilla/nsprpub前面有空格,这是要下载到的目录,回车执行命令,大概4-5分钟后出现如下画面:

等到命令执行完毕你会在c盘已经有了一个文件夹nspr,里面有子目录mozilla,而子目录里又有nsprpub文件夹,nsprpub文件夹里才是刚才下载得到的源码文件。有了源码我们就要编译了,首先切换到nspr目录。3:输入cd /c/nspr
4:输入mkdir target.debug,在nspr目录里新建一个文件夹,名为: target.debug。
5:输入cd target.debug,转到新建的target.debug文件夹里。
6:输入 ../mozilla/nsprpub/configure --enable-win32-target=WIN95,如果要生成Release版本的可以多加上--disable-debug --enable-optimize两项即可,这里只生成Debug版本的,后面的spiderMonkey的Release版本也是用的这个nspr的Debug版本,体积会稍大些,你完全可以再生成一份nspr的Release版本,然后用此Release版本再生成spidermonkey的Release版本,这里不再多说如下图:


7:输入 make,如下图:


然后就开始编译了,命令执行结束的状况:



而命令执行完毕后,你会在C:\nspr\target.debug\dist\lib目录下得到下面的文件:



你会在C:\nspr\target.debug\dist\bin目录下得到下面的文件:



如果你得到到东西和上面的一样,那恭喜你,编译对了。可以进行下面的大步骤了。
第三步,构建mozjs-31.2.0源码,先编译Release版本的:
1:输入 cd /c/mozjs-31.2.0/js/src,转到第一大步的第2小步骤里的C:\mozjs-31.2.0目录。
2:输入 autoconf-2.13,回车执行命令。
3:输入 mkdir build_OPT.OBJ,创建目录build_OPT.OBJ,官方文档里说优化版(Release版本)要求以"_OPT.OBJ"命名结尾。
4:输入 cd build_OPT.OBJ。
5:输入 ../configure --with-nspr-cflags="-IC:/nspr/target.debug/dist/include/nspr" \
            --with-nspr-libs="C:/nspr/target.debug/dist/lib/nspr4.lib \
                              C:/nspr/target.debug/dist/lib/plds4.lib \
                              C:/nspr/target.debug/dist/lib/plc4.lib"

configue后面的参数项把编译nspr的lib文件和需要的头文件给指出来,不然的话要出错的,说是找不到头文件等,如果不加--with-nspr-cflags和--with-nspr-libs命令项出错图如下:



加上的话命令效果如下图:



当configure命令执行结束时,出现下面画面:



6:
输入 mozmake,回车执行命令,这个过程很漫长,可能需要大概40分钟的时间,中间有些异常的行为,就是老是重复一些片段,刚开始我以为是出错了,其实不是,一定要耐心等待命令执行完毕,重复片段的图片如下,我截的图是debug调试版本的图:


命令执行完毕的时候,在C:\mozjs-31.2.0\js\src\build1_OPT.OBJ\dist\lib目录下得到编译的lib文件:



在C:\mozjs-31.2.0\js\src\build1_OPT.OBJ\dist\bin目录下得到编译的dll文件,当然在build1_OPT.OBJ文件夹别的地方也有:




成功编译优化版本(Release),下面编译Debug版本:
1:输入 cd ..   ,转到上层目录。
2:输入 autoconf-2.13
3:输入 mkdir build_DBG.OBJ,官方文档要求Debug版本的要以"_DBG.OBJ"命名结尾
4:输入 cd build_DBG.OBJ
5:输入 ../configure --enable-debug --disable-optimize --with-nspr-cflags="-IC:/nspr/target.debug/dist/include/nspr" \
            --with-nspr-libs="C:/nspr/target.debug/dist/lib/nspr4.lib \
                              C:/nspr/target.debug/dist/lib/plds4.lib \
                              C:/nspr/target.debug/dist/lib/plc4.lib"
再附上一个图片:



6:输入 mozmake,执行完毕效果图:



至此,成功编译Release和Debug版本。具体的编译结果请看各自创建的文件夹里的dist目录。现在你可以在开发环境中进行使用了。  如果完全按照上面的步骤,应该不会出什么错误的。实在遇到什么麻烦,可以通过QQ:281832562来联系询问我。
原创粉丝点击