0

这个问题对于这个论坛来说可能太详细了,但我找不到 duktape 的邮件列表。也许这个问题对于试图让 duktape 在更晦涩的硬件上运行的其他人有用。

我正在尝试使用 OLD gcc 编译器(2.95.3)让 duktape 在旧的 ColdFire CPU 上工作。该板的资源(闪存/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 编译错误。如果我取消定义 DUK_USE_BUILTIN_INITJS,初始化工作。该错误是语法错误(尚不确定在哪里)。通过在我的可执行文件上运行“字符串”,我可以看到 javascript 程序源字符串在那里。作为一个附带问题,当这个错误发生时,longjmp 不起作用(setjmp 从未调用过?)所以我的致命处理程序被调用,但我现在不在乎。

我认为这可能是我的小型 C 堆栈(看起来 js 编译器使用递归),但使堆栈更大并没有帮助。

我开始深入研究 JS 编译器,但这一定是架构或我的环境的问题。任何建议表示赞赏!

编辑:我刚刚注意到一个类似问题的帖子,并且有人要求重复“-DDUK_OPT_DEBUG -DDUK_OPT_DPRINT -DDUK_OPT_ASSERTIONS -DDUK_OPT_SELF_TESTS”我将尝试使用这些选项(如果可能,我非常接近搬迁限制在我的可执行文件上)。

4

1 回答 1

0

1.4.0 版本 ( https://github.com/svaarala/duktape/pull/550 ) 中存在一个错误,即使架构支持打包表示,也导致 duk_config.h 错误地以未打包的值表示结束。在您的情况下,这可能是一个问题 - 尝试添加和显式 -DDUK_OPT_PACKED_TVAL (这会强制 Duktape 使用打包表示)以查看它是否有帮助。

于 2016-01-19T22:02:37.167 回答