芯片开放社区
直播中

李辉

7年用户 1344经验值
私信 关注
[技术讨论]

【平头哥Sipeed LicheeRV 86 Panel测评】再次配置编译工具链-运行HelloWord

之前的文章:[【平头哥Sipeed LicheeRV 86 Panel测评】4-编译环境搭建],尝试了一次编译环境的搭建以及HelloWorld程序的测试,最终在板子上运行时,提示glibc的版本不对:


为此,提交了一个工单,咨询了平头哥开放社区的工程师,在几次信息回复之后,为我提供了另一种编译工具链的配置方式,成功运行了HelloWorld程序。

1 另一种编译工具链配置

1.1 下载D1开发板的SDK


此工具链推荐使⽤ ubuntu18.04 或 ubuntu20.04 环境。

选择如下资源进行下载:


下载后解压,得到d1_sdk文件夹,再进入toolchain目录,复制d1-sdk.tar.xz到自己的Ubuntu虚拟器中:


然后解压:

star xvf d1-sdk.tar.xz
进入d1-sdk目录,可以看到4个文件:



1.2 运行脚本文件

d1-sdk目录的sh脚本文件用来配置编译工具链,在配置之前,需要现在“~/.local”目录下创建一个文件夹:

mkdir -p ~/.local/riscv64-toolchain
然后部署sdk到 ~/.local/riscv64-toolchain 目录下:

cd  d1-sdk
./oecore-x86_64-riscv64-toolchain-nodistro.0.sh -d ~/.local/riscv64-toolchain
部署过程需要几分钟,部署完之后的打印如下图:


注意箭头处的提示,先不管它。

可以进入到“~/.local/riscv64-toolchain”目录中看一下:


1.3 注意是否有LD_LIBRARY_PATH的问题

接着就可以尝试编译HelloWord程序了。

在编译之前,需要再执行一次如下指令:

source ~/.local/riscv64-toolchain/environment-setup-riscv64-oe-linux
我这里执行后,再次提示如下的LD_LIBRARY_PATH的问题,说是LD_LIBRARY_PATH变量不应该被赋值。

那就先看一下LD_LIBRARY_PATH里是什么值:

echo $LD_LIBRARY_PATH
确认这个值暂时无用后,可以先使用unset指令去掉该值:

unset LD_LIBRARY_PATH
然后再次执行脚本文件,没有再出现任何提示:


然后就可以编译了,可以先看一下这次的编译工具链信息:

echo $CCriscv64-linux-gcc -fstack-protector-strong -D_FORtiFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/xxPCB/.local/riscv64-toolchain/sysroots/riscv64-oe-linux --no-sysroot-suffix
然后使用如下指令编译:

$CC -o HelloWorld HelloWorld.c
最终得到HelloWorld文件。

2 编译测试HelloWorld

和之前一样,通过ADB工具,将HelloWorld文件拷贝到板子中进行运行,此次运行成功,输出了程序中的打印:


3 总结

本篇是之前文章[【平头哥Sipeed LicheeRV 86 Panel测评】4-编译环境搭建]的补充,通过另一种方式打印编译工具链,实现了HelloWorld程序的运行。


文章转载自:平头哥芯片开放社区 作者:码农爱学习

更多回帖

发帖
×
20
完善资料,
赚取积分