这个问题对于这个论坛可能过于详细,但我找不到duktape的邮件列表。也许这个问题对于那些试图让duktape在更加模糊的硬件上运行的人来说会很有用。
我正在尝试让duktape使用旧的ColdFire CPU,使用OLD gcc编译器(2.95.3)。电路板资源有限(闪存/ RAM)但我似乎有足够的资源。我必须使用旧的编译器。
我相信duk_config.h正在计算关于字节序等的正确选项。我使用了许多duktape选项来减少代码和数据大小。我已成功在64位和32位Ubuntu上使用相同的配置,它工作正常。
"属性字符串"在duk_hthread_create_builtin_objects()中形成并设置的是: " bb u pnRHSBOL p2 a8 generic linux gcc"这似乎是正确的(不确定"泛型"标签对建筑的影响)。
调用duk_create_heap()时出现故障。我已将问题隔离到我认为是与duk_initjs相关的JS编译错误。如果我unf DUK_USE_BUILTIN_INITJS,初始化工作。错误是语法错误(不确定在哪里)。通过运行"字符串"在我的可执行文件中,我可以看到javascript程序源字符串在那里。作为一个副作用,当发生这个错误时,longjmp不起作用(setjmp从不调用?)所以我的致命处理程序被调用,但我现在不在乎。
我认为它可能是我的小C堆栈(因为看起来js编译器使用递归)但是使堆栈更大没有帮助。
我开始深入研究JS编译器,但这必然是架构或我的环境的问题。任何建议表示赞赏!
编辑:我刚刚注意到一个类似问题的帖子,并且有一个请求重复" -DDUK_OPT_DEBUG -DDUK_OPT_DPRINT -DDUK_OPT_ASSERTIONS -DDUK_OPT_SELF_TESTS"我将尝试使用这些选项(如果可能,我非常接近可执行文件的重定位限制。)
答案 0 :(得分:0)
1.4.0版本(https://github.com/svaarala/duktape/pull/550)中存在一个错误,即使架构支持打包表示,也会导致duk_config.h错误地以最终解压缩值表示。在您的情况下,这可能是一个问题 - 尝试添加和显式-DDUK_OPT_PACKED_TVAL(强制Duktape使用压缩表示)来查看它是否有帮助。