window10编译器_windows shell编程

window10编译器_windows shell编程原文地址http://www.cctry.com/forum.php?mod=viewthread&tid=250698&extra=page%3D1&page=1&如何让我们的c++程序可以支持脚本,尤其是支持JavaScript是件很有意思的事情的,那样可以为软件的灵活性,扩展性提供可能。你可能会说用JavaScript引擎,对,JavaScript引擎有很多,有Googlev8,s

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原文地址http://www.cctry.com/forum.php?mod=viewthread&tid=250698&extra=page%3D1&page=1&

如何让我们的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分钟后出现如下画面:


window10编译器_windows shell编程 



等到命令执行完毕你会在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版本,这里不再多说

如下图:


window10编译器_windows shell编程 





7:输入 make,如下图:


window10编译器_windows shell编程 





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




window10编译器_windows shell编程 





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




window10编译器_windows shell编程 





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




window10编译器_windows shell编程 





如果你得到到东西和上面的一样,那恭喜你,编译对了。可以进行下面的大步骤了。


第三步,构建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命令项出错图如下:




window10编译器_windows shell编程 



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

window10编译器_windows shell编程 

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




window10编译器_windows shell编程 
6:

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


window10编译器_windows shell编程 




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




window10编译器_windows shell编程 



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






window10编译器_windows shell编程 



成功编译优化版本(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”


再附上一个图片:




window10编译器_windows shell编程 





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




window10编译器_windows shell编程 




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











版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183432.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • redis是单线程还是多线程,有哪些特点(linux多线程面试题)

    0.redis单线程问题单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。1.为什么说redis能够快速执行(1)绝大部分请求是纯粹的内存操作(非常快速)(2)采用单线程,避免了不必要的上下文切换和竞争条件(3)非阻塞IO-IO多路复用2.redis的内部实现 内部实现采用epoll,采用了epoll+自己…

  • 如何以貌取人【蔡澜】

    如何以貌取人【蔡澜】

  • java cglib_CGlib简单介绍

    java cglib_CGlib简单介绍//DecompiledbyJadv1.5.8e.Copyright2001PavelKouznetsov.//Jadhomepage:http://www.geocities.com/kpdus/jad.html//Decompileroptions:packimports(3)//SourceFileName:packagecn.eulic.codelab.cg…

  • python模块有哪些_python typeerror

    python模块有哪些_python typeerrorpython将自己写的模块上传到PyPI服务器,报错error:<urlopenerror[SSL:CERTIFICATE_VERIFY_FAILED]certificatever

  • 基于STM32的嵌入式语音识别模块设计实现「建议收藏」

    基于STM32的嵌入式语音识别模块设计实现「建议收藏」介绍了一种以ARM为核心的嵌入式语音识别模块的设计与实现。模块的核心处理单元选用ST公司的基于ARMCortex-M3内核的32位处理器STM32F103C8T6。本模块以对话管理单元为中心,通过以LD3320芯片为核心的硬件单元实现语音识别功能,采用嵌入式操作系统μC/OS-II来实现统一的任务调度和外围设备管理。经过大量的实验数据验证,本文设计的语音识别模块具有高实时性、高识别率、高稳定性的…

  • verilog调用vhdl模块_verilog和vhdl哪个更好

    verilog调用vhdl模块_verilog和vhdl哪个更好初学FPGA,记录一些个人的探索历程和心得。本文的初衷是为了验证VHDL和Verilog文件互相调用功能。以一个简单的二选一选择器为例,分别用两种方法实现功能。一、用Verilog文件调用VHDL以Verilog文件为顶层文件,调用VHDL模块,testbench为Verilog文件。1、新建project2、编写.vhd文件,FPGA_VHDL.vhd,文件名与模块名称一致;3、编写FPGA_Verilog.v文件,文件名与模块名称一致,且设为top文件。4、编写testbench文件

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号