方舟编译器使用教程

A Tutorial for Building Maple for ARM and Compiling C Codes

last updated: 2020-10-13

A General Guidance of Building Maple for ARM and Running C Examples

Here is a step by step tutorial for building the Maple for the ARM release and running real C examples, which will print some ASCII texts. We did this demo in the environment below:

    Operating System:       Ubuntu 18.04.5 LTS
    Kernel:                 4.15.0
    GCC:                    7.5.0
  1. Clone the repository from the gitee to your local environment.

     git clone https://gitee.com/openarkcompiler-incubator/mapleall.git
     cd mapleall
    
  2. Set up tools for testing.

     cd tools/
     ./setup_tools.sh
    
  3. Initialize the environment for building the Maple for ARM with the release version.

     cd ..
     source envsetup.sh arm release
    
  4. Now, can we make and install the Maple, and all maple excutables can be found in the $MAPLE_ROOT/bin directory. Let MAPLE_ROOT be the top directory of the mapleall repository

     make
     make install
    
  5. Run the two examples for fun.

    First, we will use ast2mpl as C Frontend to print the ASCII text.

     cd examples/C
     ./maple_with_ast2mpl.sh
    

    The output is as below:

     cd /home/lin/mapleall/examples/C/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/arm64-clang-release/maple -exe=me,mplcg -option="-O2 --quiet:-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         HHHHHH    HHHHHH         HHHHHH    HHHHHHHHHHHHHHHHHHH     HHHHHHHHHH      HHHHHHHHHH      HHHHHHH                 HHHHHH
     HHHHHH         HHHHHH    HHHHHH         HHHHHH   HHHHHHHHHHHHHHHHHHHHH     HHHHHHHHH      HHHHHHHHH        HHHHHH                 HHHHHH
     HHHHHH         HHHHHH     HHHHHH       HHHHHH    HHHHHH         HHHHHH     HHHHHHHHH      HHHHHHHHH        HHHHHHHH               HHHHHH
     HHHHHH         HHHHHH     HHHHHHHHHHHHHHHHHHH   HHHHHH           HHHHHH    HHHHHHHH        HHHHHHHH         HHHHHHHHHHHHHHHHH     HHHHHH
     HHHHHH         HHHHHH      HHHHHHHHHHHHHHHHH    HHHHHH           HHHHHH    HHHHHHHH        HHHHHHHH          HHHHHHHHHHHHHHHH     HHHHHH
     HHHHHH         HHHHHH       HHHHHHHHHHHHHHH    HHHHHH             HHHHHH    HHHHHHH        HHHHHHH             HHHHHHHHHHHHHH     HHHHHH
     HHHHHH         HHHHHH         HHHHHHHHHHH      HHHHHH             HHHHHH    HHHHHH          HHHHHH               HHHHHHHHHHHH     HHHHHH
    

    Then, we can use opencc/whirl2mpl as C Frontend to print the same text.

     ./maple_with_whirl2mpl.sh
    

    Here is the output:

     cd /home/lin/mapleall/examples/C/use_whirl2mpl
     ========================================================================
     ============= Use opencc/whirl2mpl as C Frontend =======================
     ========================================================================
     /home/lin/mapleall/tools/open64ark/bin/opencc -O0 -fe -keep -show -std=gnu99 printHuawei.c
     /home/lin/mapleall/tools/open64ark/bin/whirl2mpl printHuawei.B
     /home/lin/mapleall/bin/arm64-clang-release/maple -exe=me,mplcg -option="-O2 --quiet:-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         HHHHHH    HHHHHH         HHHHHH    HHHHHHHHHHHHHHHHHHH     HHHHHHHHHH      HHHHHHHHHH      HHHHHHH                 HHHHHH
     HHHHHH         HHHHHH    HHHHHH         HHHHHH   HHHHHHHHHHHHHHHHHHHHH     HHHHHHHHH      HHHHHHHHH        HHHHHH                 HHHHHH
     HHHHHH         HHHHHH     HHHHHH       HHHHHH    HHHHHH         HHHHHH     HHHHHHHHH      HHHHHHHHH        HHHHHHHH               HHHHHH
     HHHHHH         HHHHHH     HHHHHHHHHHHHHHHHHHH   HHHHHH           HHHHHH    HHHHHHHH        HHHHHHHH         HHHHHHHHHHHHHHHHH     HHHHHH
     HHHHHH         HHHHHH      HHHHHHHHHHHHHHHHH    HHHHHH           HHHHHH    HHHHHHHH        HHHHHHHH          HHHHHHHHHHHHHHHH     HHHHHH
     HHHHHH         HHHHHH       HHHHHHHHHHHHHHH    HHHHHH             HHHHHH    HHHHHHH        HHHHHHH             HHHHHHHHHHHHHH     HHHHHH
     HHHHHH         HHHHHH         HHHHHHHHHHH      HHHHHH             HHHHHH    HHHHHH          HHHHHH               HHHHHHHHHHHH     HHHHHH
    

FAQ and Errors

  1. The make complains the clang package as below:

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

    [Solution]

     sudo apt install -y clang
    
  2. if the system misses the elf library, you will get error below:

     /usr/bin/ld: cannot find -lelf
     clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    [Solution]

     sudo apt install -y libelf-dev libssl-dev
    
  3. The build lools for aarch64-linux-gnu-gcc which requires the ARM cross compiling toolchain.

     ./maple_with_ast2mpl.sh: line 44: /usr/bin/aarch64-linux-gnu-gcc: No such file or directory
    

    [Solution]

     sudo apt install -y gcc-7-aarch64-linux-gnu
     sudo ln -s /usr/bin/aarch64-linux-gnu-gcc-7 /usr/bin/aarch64-linux-gnu-gcc
    
  4. If the execution of example complains the missing command qemu-aarch64 as below, we need install the QEMU for ARM.

     ./maple_with_ast2mpl.sh: line 48: qemu-aarch64: command not found
    

    [Solution]

     sudo apt install -y qemu-system-arm qemu-efi-aarch64 qemu-utils qemu-user
    
  5. If the execution complains any one of the following errors, please check the content of the file printHuawei.out:

     Error while loading printHuawei.out: Exec format error
     Error while loading printHuawei.out: Permission denied
    

    [Suggested Diagnosis]

     less printHuawei.out
     ls /usr/bin/aarch64-linux-gnu-gcc -l
    

    [Possible Cause]

    The /usr/bin/aarch64-linux-gnu-gcc could be linked to a wrong compiler, such as /usr/bin/aarch64-linux-gnu-cpp-7. The correct compiler could be any of gcc compiler in your system, such as /usr/bin/aarch64-linux-gnu-gcc-7

    [Solution]

     sudo ln -s /usr/bin/aarch64-linux-gnu-gcc-7 /usr/bin/aarch64-linux-gnu-gcc
    

Repository

  • https://gitee.com/openarkcompiler-incubator/mapleall
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值