最近需要用jerryscript将js脚本嵌入C++ ,网上找不到前辈们的资源,进展相对缓慢,这里把自己遇到的问题以及解决办法提供给大家作为参考。
/home/ubuntu/jerryscript/jerry-core/parser/js/js-parser-statm.c: In function 'parser_parse_case_statement':
/home/ubuntu/jerryscript/jerry-core/parser/js/js-parser-mem.c:56:1: error: inlining failed in call to always_inline 'parser_free': function body not available
parser_free (void *ptr, /**< pointer to free */
^
/home/ubuntu/jerryscript/jerry-core/parser/js/js-parser-statm.c:2217:3: error: called from here
parser_free (branch_p, sizeof (parser_branch_node_t));
网上查了很多资料都不能解决(非SSE优化指令问题),但是可以判定是编译的问题,这是我当时用的编译参数:
set(CMAKE_CXX_FLAGS "-std=c++0x -O0 -g -fmessage-length=0 -Wall -Wextra ")
当我把-O0换成O2的时候问题竟然就解决了!
set(CMAKE_CXX_FLAGS "-std=c++0x -O2 -g -fmessage-length=0 -Wall -Wextra ")
除了 -O0都可以...
编译选项请参考博客:#gcc笔记01#gcc编译选项 -O0 -O1 -O2 -O3
具体原因是什么之后再研究