SpiderMonkey 入门学习(一)
2024-10-19 14:47:47
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
最新文章
- iOS之 清理缓存
- Web前端学习过程
- Request与session与application的区别
- bzoj2683简单题
- ps磨皮
- go 的 time ticker 设置定时器
- <;欧奈尔制胜法则—如何在股市中赚钱>;读书笔记
- HDU 1452 Happy 2004 (逆元+快速幂+积性函数)
- 端口扫描器——ZenmapKail Linux渗透测
- 单源最短路径——Dijkstra算法学习
- Teaching Your Computer To Play Super Mario Bros. – A Fork of the Google DeepMind Atari Machine Learning Project
- Win8.1 与 pl2303驱动
- git命令使用方法
- HOG(方向梯度直方图)
- SQL学习之SELECT子句顺序
- 用户 &#39;IIS APPPOOL\DefaultAppPool&#39; 登录失败解决办法
- input file图片上传预览效果
- 快速恢复开发环境(系统还原后的思考,附上eclipse注释的xml配置文件)
- iOS开发之--Masonry多个平均布局
- FLEX外包团队:Flex例子DEMO源码
热门文章
- File syncing and sharing software with file encryption and group sharing, emphasis on reliability and high performance.
- ftp上传文件不能上传到指定的文件夹
- linux source命令与sh shell scripts的区别
- ORACLE 表空间扩展
- Codeforces Round #385 (Div. 2) Hongcow Builds A Nation —— 图论计数
- 分布式session之redis解决方案实现
- 存储过程系列四: decode函数使用学习
- socket即时聊天
- 简单快捷地测试 JPush API
- Flask-SQLAlchemy配置