spidermonkey 源码下载:http://ftp.mozilla.org/pub/mozilla.org/js/

测试系统 Ubuntu 12.04, js 1.7.0, js 解压在/opt/js 路径下

tar -zxvf js-1.7..tar.gz -C /opt

SpiderMonkey 编译步骤:

1 登录源码目录

cd /opt/js/src

2 编译

make -f Makefile.req

编译好之后,编译文件会在/opt/js/src/Linux_All_DBG.OBJ

其中js 是一个js 的交互式客户端

libjs.so libjs.a 是动态库与静态库

我们还需要手工移动一下一个头文件,估计是他们源码里写错了

 mv /opt/js/src/Linux_All_DBG.OBJ/jsautocfg.h /opt/js/src/

下面我们写一个spidermonkey 的Hello World 程序

#include "jsapi.h"

#include "stdlib.h"

#include "string.h"
static void usage();
int main(int argc,const char* argv[])
{ if(argc!=){
usage();
exit(-);
}
JSRuntime *runtime = NULL; JSContext *context = NULL; JSObject *global = NULL; const char *script = argv[]; printf("script is \n%s\n", script); jsval rval; if (
(!(runtime = JS_NewRuntime(1024L * 1024L)))
|| (!(context = JS_NewContext(runtime, )))
|| (!(global = JS_NewObject(context, NULL, NULL, NULL)))
)
return EXIT_FAILURE; if (!JS_InitStandardClasses(context, global))
return EXIT_FAILURE; if (!JS_EvaluateScript(context, global, script, strlen(script), "script", , &rval))
return EXIT_FAILURE; printf("the script's result is \n%d\n",JSVAL_TO_INT(rval)); JS_DestroyContext(context);
JS_DestroyRuntime(runtime);
JS_ShutDown();
return EXIT_SUCCESS;
}
void usage()
{
printf("example1 script_content\n");
printf("for example:./example1 \"var a=1;b=2;a+b\"\n");
}

程序是摘自网上,搜索SpiderMonkey 学习,大部分都是将这个程序。

gcc 编译命令

gcc -DXP_UNIX -I/opt/js/src -o excample test.c  -L/opt/js/src/Linux_All_DBG.OBJ -ljs -lm

编译出来一个excample 的程序

要运行,还需添加系统的环境变量

export LD_LIBRARY_PATH=/opt/js/src/Linux_All_DBG.OBJ

测试一下

./excample "var a=1;var b=2;a+b"

输出

script is
var a=;var b=;a+b
the script's result is

最新文章

  1. iOS之 清理缓存
  2. Web前端学习过程
  3. Request与session与application的区别
  4. bzoj2683简单题
  5. ps磨皮
  6. go 的 time ticker 设置定时器
  7. <欧奈尔制胜法则—如何在股市中赚钱>读书笔记
  8. HDU 1452 Happy 2004 (逆元+快速幂+积性函数)
  9. 端口扫描器——ZenmapKail Linux渗透测
  10. 单源最短路径——Dijkstra算法学习
  11. Teaching Your Computer To Play Super Mario Bros. – A Fork of the Google DeepMind Atari Machine Learning Project
  12. Win8.1 与 pl2303驱动
  13. git命令使用方法
  14. HOG(方向梯度直方图)
  15. SQL学习之SELECT子句顺序
  16. 用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
  17. input file图片上传预览效果
  18. 快速恢复开发环境(系统还原后的思考,附上eclipse注释的xml配置文件)
  19. iOS开发之--Masonry多个平均布局
  20. FLEX外包团队:Flex例子DEMO源码

热门文章

  1. File syncing and sharing software with file encryption and group sharing, emphasis on reliability and high performance.
  2. ftp上传文件不能上传到指定的文件夹
  3. linux source命令与sh shell scripts的区别
  4. ORACLE 表空间扩展
  5. Codeforces Round #385 (Div. 2) Hongcow Builds A Nation —— 图论计数
  6. 分布式session之redis解决方案实现
  7. 存储过程系列四: decode函数使用学习
  8. socket即时聊天
  9. 简单快捷地测试 JPush API
  10. Flask-SQLAlchemy配置