今天在找关于spidermonkey的资料时发现了下面一个帖子:
http://topic.csdn.net/u/20070424/13/9a4d740e-310a-4faa-aa03-7b47f3d256ab.html?seed=92281111
C++编译spidermonkey遇到的一些问题:
我把所有需要的c文件和头文件导入到新建的工程中,并编译通过所有文件。最后显示出一liner error的问题就高手指教.
340 E:/JSEngineV1.60/jsv160/jsmath.c multiple definition of `main '
340 E:/JSEngineV1.60/jsv160/jsmath.c first defined here
[Linker error] undefined reference to `sbrk '
[Linker error] undefined reference to `setenv '
[Linker error] undefined reference to `fd_atan2 '
[Linker error] undefined reference to `fd_copysign '
[Linker error] undefined reference to `fd_copysign '
[Linker error] undefined reference to `fd_pow '
[Linker error] undefined reference to `fd_copysign '
[Linker error] undefined reference to `gettimeofday '
340 E:/JSEngineV1.60/jsv160/jsmath.c ld returned 1 exit status
我正好遇到了这个问题,也解决了。
解决方法:
spidermonkey代码的工程里有3个项目:fdlibm,editline,jslib。
编译的时候必须按照上面3的次序编译。
要注意,代码自带的工程文件编译时会清空obj文件,导致单独编译后面的项目会Linker error。
我用VS2005编译时,指定jslib的依赖项是editline,editline的依赖项是fdlibm。然后编译jslib时,vc会自动先编译前面两个项目。
然后jslib正确编译完成。
==============================
关于spidermonkey :
http://developer.mozilla.org/cn/docs/SpiderMonkey