codeblocks找不到编译器_方舟编译器简明学习笔记12——实例编译及问题解决

2e063ef489ee3a0cd34af77e1f902f87.png

Runtime俗说

后面要用到plct实验室发布的toy-runtime这么个玩意,有些人会对runtime是什么感到困惑。

毕竟大家都是从小白过来的,这个翻译过来就是“运行时刻”,一直以来技术人员都避免使用runtime这个专用词,都用“一个程序正在运行”来代替,因为他们不认为需要新增一个专用词汇,不凑巧的是这词就这么流行起来了。

所以,runtime说起来就是“一个程序在运行”,它负责管理实现整个程序稳健运行,比如toy-runtime就使得“hello word”显示在显示屏上,并且不报错,那么这个程序就是被运行的,因为没有后续动作了,所以进程自动停用了资源。

Ubuntu配置文件完全更新

编译过程,遇到了非常多的问题,还好最终都一一解决了。现在直接走一条不会绕弯的路子吧。

apt-get update
apt-get -y install openjdk-8-jdk git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386
apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu
apt-get upgrade(当这个也不好使时用下面那个)
apt-get dist-upgrade

上面的代码请反复循环执行,直到最终出现代码如下

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

恭喜你,接下来问题不大了。

方舟源码编译执行

还有点参数方面的东西需要调整一下文件夹下config下buildconfig.gn内的引用文件路径设置

GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang"
GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++"
GN_AR_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar"

我下载的文件名和史宁宁研究员的命名略有出入,所以映射也有些许改动。其他都按照史宁宁有关篇目(已链接)中相关配置执行。

然后进入到openarkcompiler下实现,依次执行命令

source build/envsetup.sh
make

如果你都是按前面约定配置好的,这里应该就会一次性成功了,其中make文件的多少不一定,有的是100多个,有的像我是88个,原因是有些东西前期已经make了,后面make时会略过去,据推算应该要执行133个。

5c4c68501c7bd7c17776317a48b06266.png

中间其他信息不再加载,加载最后的信息。

ae4bcfdbdbae6f48e1706f9ea2eb93f8.png

备注:这里我运行的地址在/User/Ark原因是我在docker ubuntu中通过-v映射方式将openarkcompiler的宿主机地址映射到虚拟机的/User/Ark上了。

结果上看,out文件夹中确实出现了4个文件,经过确认,这里生成的maple文件是2.8M,与源码给定的src/bin文件下的maple大小不一,且文件执行性上也不一致,因而肯定是通过makefile文件中mapleall指令对应的配置方式创建出来的,而非其中的cp指令(copy)。

编译完成后,就需要将java-core包给补充完全,然后将toy-runtime的实例路径添加到有关配置文件中。

运行和编译toy-runtime

小乖他爹:方舟编译器学习笔记53 方舟编译器Toy Runtime发布v0.1,Helloworld可运行​zhuanlan.zhihu.com

史宁宁研究员写的方法还是不够具体好操作,而且clone下来后地址是否正确都有可能对后续的编译过程产生致命后果。所以我建议直接下载下来然后按上面说的修改其中2个文件的配置。

1.将Makefile之中的CROSS_AARCH64_GCC = aarch64-linux-gnu-gcc-8修改为:

CROSS_AARCH64_GCC = aarch64-linux-gnu-gcc

2.将src/pacific.c中的591行的for (int idx = 0; idx < num; idx++) {...}修改为:

int idx;  
for (idx = 0; idx < num; idx++) {...}

完事后,先进入初级目录,即在编译器的根目录下执行操作。将script文件夹下的两个.sh文件挨个拖到终端中执行。也可以用命令行路径方式执行,但执行目录必须在pacific-master的目录下,不然配置不正确,makefile文件中路径就不对应了,相关工具就找不到没法完成sample的结果编译。

我是直接进入映射点

cd /Users/Ark/pacific-master/
source script/build-qemu-aarch64.sh
build-aarch64-gnu-toolchain.sh(这个sh脚本文件似乎有问题,这一行不执行,执行下一行)
apt-get install gcc-aarch64-linux-gnu

gemu工具链接到相关网站下载更新非常慢,耐心等待。

如果出现以下问题make: *** Waiting for unfinished jobs....,别惊慌,我找了一天多的资料也没能解决这个问题,也按建议将路径添加到系统中了,没办法解决。最后我突发奇想,将tmp文件夹清理了,发现又可以重新执行这个sh文件了。

91cb64b55df3c0a1fa19288c4a68ab22.png

执行命令,然后重新执行上述.sh文件。

rm /tmp -rf
chmod 777 /tmp(由于你将tmp修改后,相关权限自动被清理,会导致update无法执行)

完事后,在makefile所在的文件目录下发出make指令,一般而言是会编译成功的。

make sample

贴图显示结果:

512f327559aa46a394938c401fde118f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值