【平头哥Sipeed LicheeRV 86 Panel测评】4-编译环境搭建
<p cid="n0" mdtype="paragraph">本篇参考全志开发社区的教程:<a href="https://d1.docs.aw-ol.com/study/study_6helloword/">https://d1.docs.aw-ol.com/study/study_6helloword/</a>,尝试在板子上运行一个hello word程序。</p><p cid="n2" mdtype="paragraph">虽然未能运行成功,但操作的过程还有有必要记录一下。</p>
<h1 cid="n3" mdtype="heading">1 交叉编译环境搭建</h1>
<h2 cid="n4" mdtype="heading">1.1 下载交叉编译工具</h2>
<p cid="n5" mdtype="paragraph">交叉编译工具链:<a href="http://netstorage.allwinnertech.com:5000/sharing/b8mBL1xWa">http://netstorage.allwinnertech.com:5000/sharing/b8mBL1xWa</a></p>
<p cid="n6" mdtype="paragraph">下载后得到 riscv64-linux-x86_64-20210329.tar.gz</p>
<p cid="n7" mdtype="paragraph">复制到ubuntu中解压,我是复制到了/usr/local/d1目录中了:</p>
<pre>
<code class="language-bash">sudo tar -zxvf riscv64-linux-x86_64-20210329.tar.gz </code></pre>
<p cid="n9" mdtype="paragraph"></p>
<p cid="n10" mdtype="paragraph">编译工具链在bin文件夹下:</p>
<p cid="n11" mdtype="paragraph"></p>
<h2 cid="n12" mdtype="heading">1.2 添加环境变量</h2>
<p cid="n13" mdtype="paragraph">然后将该编译工具添加到环境变量:</p>
<pre>
<code>sudo vi /etc/profile</code></pre>
<p cid="n15" mdtype="paragraph">添加下面这句</p>
<pre>
<code>export PATH=$PATH:/usr/local/d1/bin </code></pre>
<p cid="n17" mdtype="paragraph"></p>
<p cid="n18" mdtype="paragraph">然后使之立即生效</p>
<pre>
<code>source /etc/profile</code></pre>
<p cid="n20" mdtype="paragraph">查看编译器的版本:</p>
<p cid="n21" mdtype="paragraph"></p>
<h1 cid="n22" mdtype="heading">2 测试程序编写与编译</h1>
<p cid="n23" mdtype="paragraph">编写一个hello word程序:</p>
<pre>
<code class="language-cpp">#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Hello, Sipeed LicheeRV 86Panel\n");
return 0;
}</code></pre>
<p cid="n25" mdtype="paragraph">交叉编译:</p>
<pre>
<code>riscv64-unknown-linux-gnu-gcc -o hello_world hello_world.c </code></pre>
<p cid="n27" mdtype="paragraph"></p>
<h1 cid="n28" mdtype="heading">3 ADB工具的使用</h1>
<p cid="n29" mdtype="paragraph">使用ADB(Android Debug Bridge)工具,可以方便的进行电脑与板子间的文件传输。</p>
<h2 cid="n30" mdtype="heading">3.1 ADB工具的安装</h2>
<p cid="n31" mdtype="paragraph">Windows系统可以从如下地址下载ADB:<a href="http://adbdownload.com/">http://adbdownload.com/</a></p>
<p cid="n32" mdtype="paragraph">ubuntu虚拟机中可以直接使用命令进行安装:</p>
<pre>
<code>sudo apt-get install android-tools-adb</code></pre>
<p cid="n34" mdtype="paragraph">安装完直接输入adb命令可以查看adb的相关信息:</p>
<p cid="n35" mdtype="paragraph"></p>
<h2 cid="n36" mdtype="heading">3.2 使用ADB传输文件</h2>
<h3 cid="n37" mdtype="heading">3.2.1 尝试无线连接</h3>
<p cid="n38" mdtype="paragraph">板子中的系统镜像,我使用的是LicheeRV_Tina_86panel_480p_waft.7z压缩包里的<strong>tina_d1-nezha_uart0.img</strong>镜像文件,使用这个是因为Tina系统比较小巧,启动快,且该镜像自带了一个天气示例程序,可以通过这个程序给板子配置wifi信息,实现wifi上网。</p>
<p cid="n39" mdtype="paragraph">连接好wifi后,可以先通过串口连接板子,使用ifconfig指令查看板子的ip信息,我查到的是192.168.5.102,与ubuntu的ip地址192.168.5.104是可以ping通的:</p>
<p cid="n40" mdtype="paragraph"></p>
<p cid="n41" mdtype="paragraph">然后在ubuntu中ping板子也是可以ping通的。</p>
<p cid="n42" mdtype="paragraph">但是使用如下的adb连接指令连接不上:</p>
<pre>
<code>adb connect 192.168.5.102</code></pre>
<p cid="n44" mdtype="paragraph">可能是哪里还需要配置吧,或者是我这种连接方式不对。</p>
<p cid="n45" mdtype="paragraph"></p>
<h3 cid="n46" mdtype="heading">3.2.2 使用有线连接</h3>
<p cid="n47" mdtype="paragraph">ADB无线连接的方式遇到了问题,那再试试有线连接的方式。</p>
<p cid="n48" mdtype="paragraph">有线的方式连接,貌似只能通过板子上的核心板上的USB接口连接(只有核心板上的USB口有ADB功能)。</p>
<p cid="n49" mdtype="paragraph">准备将USB线连接到核心板中的USB接口,但是核心板装到底板上之后,USB线刚好插不进去:</p>
<p cid="n50" mdtype="paragraph"></p>
<p cid="n51" mdtype="paragraph">插不进去,那就先把核心板取下来测试吧:</p>
<p cid="n52" mdtype="paragraph"></p>
<p cid="n53" mdtype="paragraph">然后在ubuntu中查看USB,将ADB设备连接至Ubuntu虚拟机:</p>
<p cid="n54" mdtype="paragraph"></p>
<p cid="n55" mdtype="paragraph">然后就可以ADB连接了,使用如下指令,如果看到有一串数字,就是连接上了。</p>
<pre>
<code>adb devices</code></pre>
<p cid="n57" mdtype="paragraph">继续使用adb shell指令可以进入到板子的命令行界面中。</p>
<p cid="n58" mdtype="paragraph">进入之后,可以先在根目录下创建一个mytest文件夹,用来存放hello_word可执行文件。</p>
<p cid="n59" mdtype="paragraph"></p>
<p cid="n60" mdtype="paragraph">使用exit执行退出ADB shell界面。</p>
<p cid="n61" mdtype="paragraph">然后使用如下指令将ubuntu中的hello_word可执行文件发送到板子中的mytest文件夹中:</p>
<pre>
<code>adb push hello_world /mytest</code></pre>
<p cid="n63" mdtype="paragraph"></p>
<h1 cid="n64" mdtype="heading">4 尝试运行hello world程序</h1>
<p cid="n65" mdtype="paragraph">运行板子中的hello_word可执行程序,没有运行起来,提示如下错误:</p>
<p cid="n66" mdtype="paragraph"></p>
<p cid="n67" mdtype="paragraph">看起来是glibc的版本不对,是不是编译系统镜像的工具链和我hello word程序的编译工具链不匹配?</p>
<p cid="n68" mdtype="paragraph">下篇继续尝试解决这个问题。</p>
<p>大佬 关于helloworld的问题麻烦提交一个工单 我让工程师这边也帮忙看一下是什么问题 提交的时候最好是复现一下这个问题。<br />
工单地址:https://occ.t-head.cn/people/workorder-submit</p>
未来开发者 发表于 2022-1-27 14:00
大佬 关于helloworld的问题麻烦提交一个工单 我让工程师这边也帮忙看一下是什么问题 提交的时候最好是复现 ...
<p>已提交,谢谢技术支持</p>
<p>使用的交叉编译工具链里的glibc版本,比运行环境里的glibc版本不符合,所以无法运行。</p>
<p> </p>
<p>可以考虑用匹配同一个版本的编译器重新编译</p>
<p> </p>
<p>或者使用静态编译, 命令行一般是: gcc -static -o hello hello.c</p>
页:
[1]