大家好,前段时间看到
VC驿站
上面会员发布了一篇文章《Windows系统编译制作SpiderMonkey最新版mozjs-31.2.0版本》,地址为:
http://www.cctry.com/thread-250698-1-1.html
过程写的很详细,使用的也是目前来说SpiderMonkey的最新版本31.2.0,不过我之前用的一直是1.8.5版本,用老的版本编译出来的SpiderMonkey库也比较小,我喜欢,哈哈!
于是,自己动手再次编译一下,因为总带着个共享版DLL也麻烦,所以,今天准备直接编译个SpiderMonkey的 静态库lib版本 ,这样调用起来就方便啦,哈哈!
开始动手。。。
1、下载工具包组件及源码:
①、SpiderMonkey1.8.5 源码: http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
②、MozillaBuild 1.6 组件: https://ftp.mozilla.org/pub/mozi ... aBuildSetup-1.6.exe
③、NPSR 4.8.9 源码: http://ftp.mozilla.org/pub/mozil ... c/nspr-4.8.9.tar.gz
为防止连接失效,特传到网盘一份,地址:
链接: http://pan.baidu.com/s/1gdITf9p 密码: fikp
2、解压:
解压 SpiderMonkey1.8.5 源码包 js185-1.0.0.tar.gz 到 H:\spider 目录下,实际路径为:H:\spider\js-1.8.5
解压 MozillaBuild 1.6 组件 MozillaBuildSetup-1.6.exe 到 H:\spider 目录下,实际路径为:H:\spider\mozilla-build
解压 NPSR 4.8.9 源码包 nspr-4.8.9.tar.gz 到 H:\spider 目录下,实际路径为:H:\spider\nspr-4.8.9
如下图:
备注:这里的 H 盘可以为任何盘符,spider也只是一个文件夹的名字,可以任意指定,只要保证 js-1.8.5、mozilla-build、nspr-4.8.9 在同一目录下即可,这样方便切换和管理。
3、启动编译环境:
启动CMD命令行窗口,并切换到 mozilla-build 目录下,按照您当前系统安装的vs版本,启动相应的bat文件,我当前电脑上装的是 vs2010,所以,我启动的是 start-msvc10.bat 脚本,如下图:
备注:这是一个类似Unix的命令行。目录名都要用反斜杠 /,驱动器也是当作一目录。例如,要进入H 盘根目录下的 spider 目录,就要执行cd /h/spider
//
// 备注:本篇文章来自 vc驿站: http://www.cctry.com/thread-252599-1-1.html
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
//
4、编译:
①、编译 NPSR 4.8.9 非调试 Release 版本库:
切换路径到 H:\spider\nspr-4.8.9 下,一条一条以此执行以下命令:
cd /h/spider/nspr-4.8.9
mkdir Release
cd Release
../mozilla/nsprpub/configure --disable-debug --enable-optimize --enable-win32-target=WIN95
make
即可完成 NPSR 4.8.9 非调试 Release 版本库的编译。执行过程比较慢,会用几分钟的时间。。。
相关截图如下:
②、编译 SpiderMonkey1.8.5 非调试 Release 版本库:
切换路径到 H:\spider\js-1.8.5\js\src 下,一条一条以此执行以下命令:
cd /h/spider/js-1.8.5/js/src
autoconf-2.13
mkdir Release
cd Release
../configure --enable-static --disable-shared-js --enable-optimize --enable-win32-target=WIN95
make
即可完成 SpiderMonkey1.8.5 非调试 Release 版本库的编译。执行过程比较慢,会用几分钟的时间。。。
备注:默认 SpiderMonkey 是使用 MD 来编译的,如果想使用 MT 请在执行 autoconf-2.13 命令之前修改:src\confg 目录下的 config.mk 文件,把 -MD 改成 -MT。
相关截图如下:
编译完成之后,大家就可以在 H:\spider\js-1.8.5\js\src\Release\dist 路径下找到 SpiderMonkey1.8.5 的编译出来的文件了。
我们真正要的只有两个目录的文件:
include 目录下有很多头文件,是用作其他工程包含的头文件;
lib 目录下有一个静态库文件 js_static.lib,这个静态库就是我们要的,看下个头,15M左右,嘿,个头真不小,基本功能应该都在里面了
//
// 备注:本篇文章来自 vc驿站: http://www.cctry.com/thread-252599-1-1.html
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
//
5、使用:
原本使用步骤不想写了,但是在使用过程中还真遇到问题了,于是就写出来吧!
①、新建一控制台类型的工程:spTest
②、在 spTest 工程目录下新建一文件夹:js185_static,将 H:\spider\js-1.8.5\js\src\Release\dist 路径下的 include、lib 两个目录拷贝到 js185_static 目录下;
③、将 js185_static/include 添加到 spTest 工程设置的 include 下面,如下图:
④、在 spTest.cpp 文件顶部加上如下代码:
⑤、添加测试代码,测试 spidermonkey 功能是否正常:
编译执行,结果链接的过程中出现问题了,如下图:
好吧,说我没定义,我就定义,当前是Windows系统,所以,我在 #include <jsapi.h> 的上面加上:
一编译,结果又报了一堆链接错误,如下图:
这就是关键了,网上很多文章都没介绍这个,经我的一番搜索,靠我的生平所学,终于找到了,再加上个宏定义,如下:
加上之后,还好,链接错误少了很多,不过又有这个链接错误,如下图:
还好,timeEndPeriod 和 timeBeginPeriod 两个函数是系统函数,经过查询MSDN,得知这两个函数的 lib 库是:Winmm.lib,于是加上这句代码:
至此,问题终于全部解决了,如下图:
执行结果如下:
好了。。。文章到这里就结束了,希望对大家有帮助,编译好的相关库都给大家打包了,工程也打包了,在下面的附件中!
过程写的很详细,使用的也是目前来说SpiderMonkey的最新版本31.2.0,不过我之前用的一直是1.8.5版本,用老的版本编译出来的SpiderMonkey库也比较小,我喜欢,哈哈!
于是,自己动手再次编译一下,因为总带着个共享版DLL也麻烦,所以,今天准备直接编译个SpiderMonkey的 静态库lib版本 ,这样调用起来就方便啦,哈哈!

开始动手。。。
1、下载工具包组件及源码:
①、SpiderMonkey1.8.5 源码: http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
②、MozillaBuild 1.6 组件: https://ftp.mozilla.org/pub/mozi ... aBuildSetup-1.6.exe
③、NPSR 4.8.9 源码: http://ftp.mozilla.org/pub/mozil ... c/nspr-4.8.9.tar.gz
为防止连接失效,特传到网盘一份,地址:
链接: http://pan.baidu.com/s/1gdITf9p 密码: fikp
2、解压:
解压 SpiderMonkey1.8.5 源码包 js185-1.0.0.tar.gz 到 H:\spider 目录下,实际路径为:H:\spider\js-1.8.5
解压 MozillaBuild 1.6 组件 MozillaBuildSetup-1.6.exe 到 H:\spider 目录下,实际路径为:H:\spider\mozilla-build
解压 NPSR 4.8.9 源码包 nspr-4.8.9.tar.gz 到 H:\spider 目录下,实际路径为:H:\spider\nspr-4.8.9
如下图:
备注:这里的 H 盘可以为任何盘符,spider也只是一个文件夹的名字,可以任意指定,只要保证 js-1.8.5、mozilla-build、nspr-4.8.9 在同一目录下即可,这样方便切换和管理。
3、启动编译环境:
启动CMD命令行窗口,并切换到 mozilla-build 目录下,按照您当前系统安装的vs版本,启动相应的bat文件,我当前电脑上装的是 vs2010,所以,我启动的是 start-msvc10.bat 脚本,如下图:
备注:这是一个类似Unix的命令行。目录名都要用反斜杠 /,驱动器也是当作一目录。例如,要进入H 盘根目录下的 spider 目录,就要执行cd /h/spider
//
// 备注:本篇文章来自 vc驿站: http://www.cctry.com/thread-252599-1-1.html
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
//
4、编译:
①、编译 NPSR 4.8.9 非调试 Release 版本库:
切换路径到 H:\spider\nspr-4.8.9 下,一条一条以此执行以下命令:
cd /h/spider/nspr-4.8.9
mkdir Release
cd Release
../mozilla/nsprpub/configure --disable-debug --enable-optimize --enable-win32-target=WIN95
make
即可完成 NPSR 4.8.9 非调试 Release 版本库的编译。执行过程比较慢,会用几分钟的时间。。。
相关截图如下:
②、编译 SpiderMonkey1.8.5 非调试 Release 版本库:
切换路径到 H:\spider\js-1.8.5\js\src 下,一条一条以此执行以下命令:
cd /h/spider/js-1.8.5/js/src
autoconf-2.13
mkdir Release
cd Release
../configure --enable-static --disable-shared-js --enable-optimize --enable-win32-target=WIN95
make
即可完成 SpiderMonkey1.8.5 非调试 Release 版本库的编译。执行过程比较慢,会用几分钟的时间。。。
备注:默认 SpiderMonkey 是使用 MD 来编译的,如果想使用 MT 请在执行 autoconf-2.13 命令之前修改:src\confg 目录下的 config.mk 文件,把 -MD 改成 -MT。
相关截图如下:
编译完成之后,大家就可以在 H:\spider\js-1.8.5\js\src\Release\dist 路径下找到 SpiderMonkey1.8.5 的编译出来的文件了。
我们真正要的只有两个目录的文件:
include 目录下有很多头文件,是用作其他工程包含的头文件;
lib 目录下有一个静态库文件 js_static.lib,这个静态库就是我们要的,看下个头,15M左右,嘿,个头真不小,基本功能应该都在里面了

//
// 备注:本篇文章来自 vc驿站: http://www.cctry.com/thread-252599-1-1.html
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
//
5、使用:
原本使用步骤不想写了,但是在使用过程中还真遇到问题了,于是就写出来吧!
①、新建一控制台类型的工程:spTest
②、在 spTest 工程目录下新建一文件夹:js185_static,将 H:\spider\js-1.8.5\js\src\Release\dist 路径下的 include、lib 两个目录拷贝到 js185_static 目录下;
③、将 js185_static/include 添加到 spTest 工程设置的 include 下面,如下图:
④、在 spTest.cpp 文件顶部加上如下代码:
⑤、添加测试代码,测试 spidermonkey 功能是否正常:
编译执行,结果链接的过程中出现问题了,如下图:
好吧,说我没定义,我就定义,当前是Windows系统,所以,我在 #include <jsapi.h> 的上面加上:
一编译,结果又报了一堆链接错误,如下图:
这就是关键了,网上很多文章都没介绍这个,经我的一番搜索,靠我的生平所学,终于找到了,再加上个宏定义,如下:
加上之后,还好,链接错误少了很多,不过又有这个链接错误,如下图:
还好,timeEndPeriod 和 timeBeginPeriod 两个函数是系统函数,经过查询MSDN,得知这两个函数的 lib 库是:Winmm.lib,于是加上这句代码:
至此,问题终于全部解决了,如下图:
执行结果如下:
好了。。。文章到这里就结束了,希望对大家有帮助,编译好的相关库都给大家打包了,工程也打包了,在下面的附件中!