目前,官方仅支持 Ubuntu 18.04+ 作为主要开发环境。
有几个依赖项,应该手动安装。以下列表是构建的绝对最小值:
gcc
或任何符合 C99 的编译器(本机或交叉编译器,例如 arm-none-eabi)cmake
>=2.8.12.2
一些脚本和工具有助于构建和开发过程,因此建议同时安装以下内容:
bash
>=4.3.11
cppcheck
>=1.61
clang-format-10
>=10.0.0
python
>=2.7.6
sudo apt-get install gcc gcc-arm-none-eabi cmake cppcheck clang-format-10 python
为了使我们的脚本正确运行,系统上应该有几个 shell 实用程序:
awk
bc
find
sed
为 Linux 构建调试版本
python tools/build.py --debug
为没有 LTO(链接时间优化)的 Linux 构建调试版本
python tools/build.py --debug --lto=off
启用更详细的输出以进行调试
tools/build.py --debug --logging=on --error-messages=on --line-info=on
向 CMake 添加自定义参数
python tools/build.py --cmake-param=CMAKE_PARAM
设置配置文件模式(es.next,最小)
python tools/build.py --profile=es.next|minimal
另请参阅相关的README.md。
使用(编译器默认,外部)libc
默认 libc 是编译器默认 libc,但您也可以使用外部 libc:
- 编译器默认 libc:
python tools/build.py
- 外部库:
python tools/build.py --compile-flag="-nostdlib -I/path/to/ext-libc/include" --link-lib="ext-c"
添加工具链文件
该cmake
目录已经包含一些可用的工具链文件,您可以按以下格式使用它们:
python tools/build.py --toolchain=TOOLCHAIN
例如,对 RaspberryPi 2 的交叉编译是这样的:
python tools/build.py --toolchain=cmake/toolchain_linux_armv7l.cmake
使用系统内存分配器
python tools/build.py --system-allocator=on
注意:系统分配器仅在 32 位系统上受支持。
启用 32 位压缩指针
python tools/build.py --cpointer-32bit=on
注意:如果启用,32 位系统上没有压缩/解压缩。
更改默认堆大小 (512K)
python tools/build.py --mem-heap=256
如果您想使用超过 512K,则必须启用 32 位压缩指针。
python tools/build.py --cpointer-32bit=on --mem-heap=1024
注意:当使用 JerryScript 内存分配器时,堆大小将在编译时静态分配。
使用 libfuzzer 支持构建
CC=clang python tools/build.py --libfuzzer=on --compile-flag=-fsanitize=address --lto=off
检查 libfuzzer 的文档以获取创建的 fuzzer 二进制文件的运行时设置:https ://llvm.org/docs/LibFuzzer.html 。
获取适用于 Linux 的所有可用构建选项的列表
python tools/build.py --help
python tools/run-tests.py --precommit
运行构建选项测试
python tools/run-tests.py --buildoption-test
运行单元测试
python tools/run-tests.py --unittests
运行 jerry-tests
python tools/run-tests.py --jerry-tests
运行签核检查
python tools/run-tests.py --check-signed-off
运行 cppcheck
python tools/run-tests.py --check-cppcheck
运行格式检查
python tools/run-tests.py --check-format
获取所有可用测试选项的列表
python tools/run-tests.py --help