Последнее обновление: 2020-10-22
Здесь приведён пошаговый пример сборки Maple для выпуска ARM и запуска реального примера, который выведет некоторый текст ASCII. Мы выполнили эту демонстрацию в следующей среде:
Операционная система: Ubuntu 18.04.5 LTS
Ядро: 4.15.0
GCC: 7.5.0
Примечание: также работает Ubuntu 16.04.4 LTS с GCC 5.4.0.
Если мы хотим собрать Maple для RISC-V, пожалуйста, следуйте инструкциям (setup_riscv_qemu_env.md), чтобы подготовить среду кросс-компиляции и выполнения QEMU.
Клонируйте репозиторий из gitee в вашу локальную среду.
git clone https://gitee.com/openarkcompiler-incubator/mapleall.git
cd mapleall
Настройте инструменты для тестирования.
cd tools/
./setup_tools.sh
cd ..
Инициализируйте среду для сборки релизной версии компиляторов Maple для целей ARM или RISCV.
source envsetup.sh arm release
или source envsetup.sh riscv release
Теперь мы можем создать и установить Maple, и все исполняемые файлы maple находятся в каталоге $MAPLE_ROOT/bin.
make
make install
Запустите два примера для развлечения.
Сначала мы будем использовать ast2mpl в качестве C Frontend для печати текста ASCII.
cd examples/C
./maple_aarch64_with_ast2mpl.sh
Вывод выглядит следующим образом:
cd /home/lin/mapleall/examples/C/aarch64_use_ast2mp
========================================================================
================== Use ast2mpl as C Frontend ===========================
========================================================================
INC=/usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
/home/lin/mapleall/bin/ast2mpl printHuawei.c -I /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/include
/home/lin/mapleall/bin/aarch64-clang-release/maple -exe=me,mplcg -option="-O2 --quiet:-O2 -quiet" printHuawei.mpl
/usr/bin/aarch64-linux-gnu-gcc -o printHuawei.out printHuawei.s -lm
qemu-aarch64 -L /usr/aarch64-linux-gnu/ printHuawei.out
HHHHHH HHHHHH HHHHHH HHHHHH HHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHH HHHHHH HHHHHHHH HHHHHH HHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHH HHHHHH HHHHHHHH HHHHHH HHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHH HHHHHH HHHHHHHHH HHHHHH HHHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHH HHHHH HHHHHHHHHH HHHHH HHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHH HHHHHH HHHHHHHHHH HHHHHH HHHHHh HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHH HHHHH HHHHHH HHHHH HHHHHHHHHHHHHHHHHHH HHHHHH HHHHHHHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHH HHHHH HHHHHH HHHHHHHHHHHHHHHHHHH HHHHHH HHHHHHHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHH HHHHHHHHHHHHHHHHHHH HHHHHH HHHHHHHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHH HHHHHH HHHHH HHHHHHHHHHHHHHHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHHHHHHHH HHHHH HHHHH HHHHH HHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHH HHHHHHHHHHHHHHHHHHH HHHHHHHHHHH HHHHHHHHHHH HHHHHH HHHHHH HHHHHH Тогда мы можем использовать opencc/whirl2mpl в качестве C Frontend для печати того же текста.
./maple_aarch64_with_whirl2mpl.sh
Вот вывод:
cd /home/lin/mapleall/examples/C/aarch64_use_whirl2mpl
========================================================================
============= Use clangfe/whirl2mpl as C Frontend =======================
========================================================================
/home/lin/mapleall/tools/open64_prebuilt/x86/aarch64/bin/clangfe -cc1 -emit-llvm -triple aarch64-linux-gnu -D__clang__ -D__BLOCKS__ -isystem /usr/aarch64-linux-gnu/include -isystem /usr/lib/gcc-cross/aarch64-linux-gnu/5/include printHuawei.c
/home/lin/mapleall/tools/open64_prebuilt/x86/aarch64/bin/whirl2mpl printHuawei.B
/home/lin/mapleall/bin/aarch64-clang-release/maple -exe=me,mplcg -option="-O2 --quiet:-O2 -quiet" printHuawei.mpl
/usr/bin/aarch64-linux-gnu-gcc -o printHuawei.out printHuawei.s -lm
qemu-aarch64 -L /usr/aarch64-linux-gnu/ printHuawei.out После сборки компиляторов Maple для целевой платформы riscv64 мы можем запустить:
./maple_riscv64_with_whirl2mpl.sh
Вывод команды:
cd /home/lin/mapleall/examples/C/riscv64_use_whirl2mpl
========================================================================
============= Use clangfe/whirl2mpl as C Frontend =======================
========================================================================
/home/lin/mapleall/tools/open64_prebuilt/x86/riscv64/bin/clangfe -cc1 -emit-llvm -triple riscv64-linux-gnu -D__clang__ -D__BLOCKS__ -D__riscv_xlen=64 -U __riscv_float_abi_soft -D__riscv_float_abi_double -isystem /usr/riscv64-linux-gnu/lib/gcc/riscv64-unknown-linux-gnu/10.1.0/include -isystem /usr/riscv64-linux-gnu/sysroot/usr/include -U __SIZEOF_INT128__ printHuawei.c
/home/lin/mapleall/tools/open64_prebuilt/x86/riscv64/bin/whirl2mpl printHuawei.B
/home/lin/mapleall/bin/riscv64-clang-release/maple -exe=me,mplcg -option=-O2 --quiet:-O2 -quiet printHuawei.bpl
/usr/riscv64-linux-gnu/bin/riscv64-unknown-linux-gnu-gcc -o printHuawei.out printHuawei.s
LD_LIBRARY_PATH=/usr/riscv64-linux-gnu/sysroot/lib /usr/bin/qemu-riscv64 printHuawei.out **Часто задаваемые вопросы и ошибки**
Make выдаёт ошибку, связанную с пакетом clang:
/bin/sh: 1: clang: not found ninja: build stopped: subcommand failed
[Решение]
sudo apt install -y clang
Если в системе отсутствует библиотека elf, вы получите следующую ошибку:
/usr/bin/ld: cannot find -lelf clang: error: linker command failed with exit code 1 (use -v to see invocation)
[Решение]
sudo apt install -y libelf-dev libssl-dev
При сборке требуется aarch64-linux-gnu-gcc, который требует наличия инструментальной цепочки для кросс-компиляции ARM.
./maple_aarch64_with_ast2mpl.sh: line 44: /usr/bin/aarch64-linux-gnu-gcc: No such file or directory
[Решение]
sudo ln -s /usr/bin/aarch64-linux-gnu-gcc-7 /usr/bin/aarch64-linux-gnu-gcc
note: using gcc-5-aarch64-linux-gnu for ubuntu 16.04.4 works as well```
Если при выполнении примера возникает ошибка, связанная с отсутствием команды qemu-aarch64, нам необходимо установить QEMU для ARM.
./maple_aarch64_with_ast2mpl.sh: line 48: qemu-aarch64: command not found
[Решение]
sudo apt install -y qemu-system-arm qemu-efi-aarch64 qemu-utils qemu-user
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )