ARM 32/64プラットフォーム用のjavascript評価用にDuktapeを使用します。 特定のプラットフォーム&アーキテクチャ用にのみDuktapeを構築したいと思います。すべての範囲ではありません。特定のプラットフォーム用のDuktapeを構築する(ARM 32/ARM 64)
私が成功し、それを構築することができ、そうです:
python tools/configure.py \
--source-directory src-input \
--platform linux \
--architecture arm32 \
--config-metadata config/ \
--option-file arm32_config.yaml \
--output-directory /tmp/arm32
arm32_config.yaml:
DUK_USE_32BIT_PTRS: true
DUK_USE_64BIT_OPS: false
DUK_USE_FATAL_HANDLER: false
ビルド・パスusually.Thatの偉大な!
ラズベリーパイ(単にテストのためにそれを使用)で:
#include "duktape.h"
int main(int argc, char *argv[]) {
duk_context *ctx = duk_create_heap_default();
duk_eval_string(ctx, "print('Hello world!');");
duk_destroy_heap(ctx);
return 0;
}
とMakefile.helloファイル:
DUKTAPE_SOURCES = src/arm32/duktape.c
# Compiler options are quite flexible. GCC versions have a significant impact
# on the size of -Os code, e.g. gcc-4.6 is much worse than gcc-4.5.
CC = gcc
CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer
CCOPTS += -I./src/arm32 # for combined sources
CCLIBS = -lm
CCOPTS += -DUK_USE_32BIT_PTRS
CCOPTS += -DUK_USE_64BIT_OPS
CCOPTS += -DUK_USE_FATAL_HANDLER
# For debugging, use -O0 -g -ggdb, and don't add -fomit-frame-pointer
hello: $(DUKTAPE_SOURCES) hello.c
$(CC) -o [email protected] $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) hello.c $(CCLIBS)
私はのhello.cを持って
それも動作します!
しかし、私は、私はいつもrecivedきた ./helloプログラムを起動しようとしているとき: セグメンテーションフォールト
は私のミスで指摘してもらえ、私が見逃している何? ありがとうございます!
PS:gccのバージョン4.9.2(Raspbian 4.9.2-10)
詳細な説明をありがとうございました! –
低メモリデバイス用にduktapeを最適化する必要がある場合はどうすればよいですか?私は 'config.yaml'を使ってコンパイルのステップでそれを行う必要があると考えました。 ' DUK_USE_JX:偽 DUK_USE_DEBUG_BUFSIZE:1024 .... ' は、それはまだ有効ですか? –
https://github.com/svaarala/duktape/blob/master/doc/low-memory.rstに記載されている、多くのメモリ不足のオプションがあります(ここにリストするには多すぎます)。低メモリオプションは通常、フットプリントを得るために何か(パフォーマンスまたは機能性)をトレードオフするので、最適なオプションは特定のターゲットアプリケーションに依存します。たとえばを使用します。 'DUK_USE_LIGHTFUNC_BUILTINS:false'、' DUK_USE_JX:false'はフットプリントを減らすためのすべての可能なステップです。 –