1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openarkcompiler-incubator-mapleall

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
tutorial.md 8.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 02:16 591c2a4

Учебник и часто задаваемые вопросы по сборке Maple для ARM и компиляции программ на C

Последнее обновление: 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.

  1. Клонируйте репозиторий из gitee в вашу локальную среду.

     git clone https://gitee.com/openarkcompiler-incubator/mapleall.git
     cd mapleall
  2. Настройте инструменты для тестирования.

     cd tools/
     ./setup_tools.sh
     cd ..
  3. Инициализируйте среду для сборки релизной версии компиляторов Maple для целей ARM или RISCV.

     source envsetup.sh arm release

или source envsetup.sh riscv release

  1. Теперь мы можем создать и установить Maple, и все исполняемые файлы maple находятся в каталоге $MAPLE_ROOT/bin.

     make
     make install
  2. Запустите два примера для развлечения.

Сначала мы будем использовать 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 **Часто задаваемые вопросы и ошибки**
  1. Make выдаёт ошибку, связанную с пакетом clang:

    /bin/sh: 1: clang: not found ninja: build stopped: subcommand failed

    [Решение]

    sudo apt install -y clang

  2. Если в системе отсутствует библиотека 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

  3. При сборке требуется 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```
    
  4. Если при выполнении примера возникает ошибка, связанная с отсутствием команды 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openarkcompiler-incubator-mapleall.git
git@api.gitlife.ru:oschina-mirror/openarkcompiler-incubator-mapleall.git
oschina-mirror
openarkcompiler-incubator-mapleall
openarkcompiler-incubator-mapleall
dev