之前的文章:[【平头哥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_FOR
tiFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/xx
PCB/.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程序的运行。
文章转载自:平头哥芯片开放社区 作者:码农爱学习