<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[在WSL上编译并运行XR806的完全体demo]]></title><description><![CDATA[<h1>简介</h1>
<p dir="auto">前几天刚刚收到极术社区发放的XR806开发板，先来拍个美图~</p>
<p dir="auto"><img src="/assets/uploads/files/1640024804340-xr806-devboard-resized.jpg" alt="XR806 Development Board" class=" img-responsive img-markdown" /></p>
<p dir="auto">众所周知，这个开发板的最大特点是WiFi/BLE两大无线协议一片配齐。得益于OpenHarmony的加持，在上面搭建复杂应用是个相对轻松的工作。不信？下面我们就来跑一跑XR806的自带demo。</p>
<blockquote>
<p dir="auto">注：本文主要参考了<a href="https://xr806.docs.aw-ol.com/" target="_blank" rel="noopener noreferrer nofollow ugc">全志在线的XR806文档</a>，很多问题都可以在这里找到答案。</p>
</blockquote>
<h1>准备工作</h1>
<p dir="auto">以下主要介绍的是在WSL 1（Ubuntu 20.04）下编译XR806所需的准备工作，如果是在Linux系统下直接安装，建议参考官方文档。</p>
<h2>代码下载</h2>
<p dir="auto">首先我们需要准备好<code>repo</code>。这里推荐使用全志的版本，好处是服务器比较稳定，一般都能顺利下载，不过需要事先注册一下<a href="https://open.allwinnertech.com" target="_blank" rel="noopener noreferrer nofollow ugc">全志客户服务平台</a>的账号，并且需要添加公钥才行，具体的下载和安装方式可以参考<a href="https://d1.docs.aw-ol.com/study/study_2getsdk/" target="_blank" rel="noopener noreferrer nofollow ugc">源码下载 - D1</a>。最后记得把<code>repo</code>移到指定位置，或是至少添加到<code>PATH</code>变量中。</p>
<p dir="auto">接下来我们尝试拉取SDK相关的代码。由于SDK存放于Gitee，因此需要在Gitee上也添加相同的公钥才能拉取代码，这个就不解释了。</p>
<blockquote>
<p dir="auto">注：在这一步中，需要保证当前的<code>python</code>版本是2.6或2.7。如果不是的话，可以通过<code>apt</code>安装<code>python-is-python2</code>，安装好后<code>python</code>就是Python 2.7了。</p>
</blockquote>
<pre><code class="language-bash"># 创建文件夹，名称和路径随意
mkdir sdk
cd sdk
# 初始化
repo init -u ssh://git@gitee.com/openharmony-sig/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify -m devboard_xr806.xml
# 拉取代码
repo sync -c
# 下载通过LFS存储的二进制文件，需要提前通过`apt`安装`git-lfs`
repo forall -c 'git lfs pull'
</code></pre>
<p dir="auto">上面一通操作完后，所有编译需要的代码应该静静地躺在应有的位置了。</p>
<h2>环境配置</h2>
<p dir="auto">环境配置的话，推荐看看<a href="https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-linux.md" target="_blank" rel="noopener noreferrer nofollow ugc">获取源码及Ubuntu编译环境准备</a>，但有几个地方需要注意：</p>
<ol>
<li>在后续编译的过程中需要使用Python 3（主要是<code>hb</code>），因此设置<code>python</code>软链接的这一步是必须的，而这一步会导致<code>repo</code>使用的Python版本有误，如果后续需要拉取代码的话，记得重新设置一下软链接到<code>python2</code>。</li>
<li>LLVM不需要下载和安装，这里使用的是<code>gcc</code>。在<a href="https://xr806.docs.aw-ol.com/study/soft_compile/" target="_blank" rel="noopener noreferrer nofollow ugc">固件编译 - XR806</a>中，会提到如何配置编译工具链，这里不再赘述。</li>
<li>SDK中的<code>mkimage</code>是32位程序，但是WSL 1默认并不支持32位程序。这里可以参考<a href="https://blog.csdn.net/shengerjianku/article/details/82290482" target="_blank" rel="noopener noreferrer nofollow ugc">让win10的WSL子系统支持32bit程序</a>，需要注意的是每次启动WSL都需要来一句<code>sudo service binfmt-support start</code>（如果提示error可以忽略）。</li>
</ol>
<h1>编译完全体demo</h1>
<h2>第一次编译</h2>
<p dir="auto">第一次编译我们选择了默认的demo，这里我们基本上直接照搬了<a href="https://xr806.docs.aw-ol.com/study/soft_compile/" target="_blank" rel="noopener noreferrer nofollow ugc">固件编译 - XR806</a>。</p>
<pre><code class="language-bash"># 编译libSDK
cd device/xradio/xr806/xr_skylark
make PRJ=demo/wlan_ble_demo defconfig
make menuconfig
make lib -j
# 编译完整app
cd -
hb set
hb build -f
</code></pre>
<blockquote>
<p dir="auto">注：这一步<code>make menuconfig</code>必须要执行，否则会提示找不到<code>device/xradio/xr806/liteos_m/SDKconfig.gni</code>这个文件。</p>
</blockquote>
<p dir="auto">编译完成后，我们在<code>device/xradio/xr806/xr_skylark/out</code>文件夹下得到了名为<code>xr_system.img</code>的文件。之后参考<a href="https://xr806.docs.aw-ol.com/study/soft_flash/" target="_blank" rel="noopener noreferrer nofollow ugc">固件烧录 - XR806</a>即可。</p>
<p dir="auto">这里我把第一次编译后得到的<code>xr_system.img</code>文件分享出来，大家可以自取：<a href="/assets/uploads/files/1640024846186-xr_system_default.img">xr_system_default.img</a> 。</p>
<h2>demo内容探究</h2>
<p dir="auto">我们花了不少力气，终于把demo编译好了。那么，这个demo到底是个啥呢？其实答案都在<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/adapter/console/src/command.c" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/adapter/console/src/command.c</a>这个文件里面。</p>
<blockquote>
<p dir="auto">注：为啥会在这个文件夹呢？聪明如你，只要打开<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/BUILD.gn" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/BUILD.gn</a>这个文件，看到<code>"adapter/console:app_console"</code>这一行，应该就会有答案啦。</p>
</blockquote>
<p dir="auto">可以看到，这个demo实际上支持<strong>非常多</strong>的命令，足以涵盖XR806支持的大部分功能。这些命令又可以进一步被分为两大类，其中：</p>
<ul>
<li><code>hm</code>命令看起来是硬件相关的各种命令的集合，其中的<code>iot</code>子命令包括了<code>gpio</code>、<code>uart</code>等大家喜闻乐见的功能。这些命令对应的源文件主要在<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/tree/master/xr806/adapter/console/src" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/adapter/console/src</a>文件夹中。</li>
<li>其它命令则更加侧重应用层的相关功能，特别是几乎无所不包的<code>net</code>命令。这些命令对应的源文件主要在<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/tree/master/xr806/xr_skylark/project/common/cmd" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/project/common/cmd</a>文件夹中。</li>
</ul>
<p dir="auto">那么要怎么把demo玩起来呢？其实很简单，只要使用熟悉的串口工具，以115200 bps的波特率连接XR806的USB转串口（CP2102N），就可以通过类似于console的方式输入命令了。</p>
<blockquote>
<p dir="auto">注：如果使用PuTTY的话，推荐在连接时勾选Terminal的Implicit CR in every LF选项，这样可以避免回显字符换行不回车的尴尬。</p>
</blockquote>
<p dir="auto">如果你在使用XR806的官方开发板，那么就可以利用挂在PWM2上的LED实现最简单的blink（闪烁），只需要输入以下命令即可：</p>
<pre><code class="language-bash">hm iot pwm init p=2
hm iot pwm start p=2 d=50 f=5
</code></pre>
<p dir="auto">这些命令的使用方法推荐直接看源代码，因为有不少命令并没有给出完整的帮助文档，感觉这个可以在后续优化一下。</p>
<h2>全功能demo编译</h2>
<p dir="auto">在阅读到<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/adapter/console/src/command.c" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/adapter/console/src/command.c</a>这个文件时，我们会注意到在<code>#if PRJCONF_NET_EN</code>下有一些开关，这些开关控制了一些命令是否编译。那么，如果我们把这些开关都打开，不就可以得到一个全功能的demo了吗？说干就干！</p>
<p dir="auto">看起来，我们需要做的工作就是把这些开关都打开，然后重新编译即可。不过事情的发展一般都没有这么顺利，我们等下会遇到两个问题（剧透了哈）。</p>
<p dir="auto">改好文件后，我们在<code>device/xradio/xr806/xr_skylark</code>文件夹下重新编译一下<code>libSDK</code>：</p>
<pre><code class="language-bash">make build_clean
make lib -j
</code></pre>
<p dir="auto">看着似乎没问题对不对？不急，我们再回到<code>sdk</code>目录，开始进行二阶段编译：</p>
<pre><code class="language-bash">hb build -f
</code></pre>
<p dir="auto">这次编译看起来一切顺利，直到……最后遇到了这么一个编译错误：</p>
<pre><code>[OHOS ERROR] /home/metro/tools/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: ../../../../lib/libnopoll.a(nopoll_conn.o): in function `__nopoll_conn_new_common':
[OHOS ERROR] /home/metro/xr806/sdk/device/xradio/xr806/xr_skylark/src/net/nopoll/src/nopoll_conn.c:927: undefined reference to `mbedtls_debug_set_threshold'
[OHOS ERROR] /home/metro/tools/gcc-arm-none-eabi-10-2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: ../../../../lib/libnopoll.a(nopoll_conn.o): in function `__nopoll_conn_accept_complete_common':
[OHOS ERROR] /home/metro/xr806/sdk/device/xradio/xr806/xr_skylark/src/net/nopoll/src/nopoll_conn.c:5047: undefined reference to `mbedtls_debug_set_threshold'
[OHOS ERROR] collect2: error: ld returned 1 exit status
</code></pre>
<p dir="auto">这里提示找不到一个名为<code>mbedtls_debug_set_threshold</code>的函数。这个问题是怎么出现的呢？一通搜索之后，我们找到了这个函数，它是在<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/tree/master/xr806/xr_skylark/src/net/mbedtls-2.16.8" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/src/net/mbedtls-2.16.8/library/debug.c</a>中被定义的，看起来功能非常简单：</p>
<pre><code class="language-c">static int debug_threshold = 0;

void mbedtls_debug_set_threshold( int threshold )
{
    debug_threshold = threshold;
}
</code></pre>
<blockquote>
<p dir="auto">注：实际上<code>mbedtls_debug_set_threshold</code>这个函数在多个文件中被定义了，但是实际使用的是上述文件。为什么这么肯定呢？看了<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/xr_skylark/src/net/Kconfig" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/src/net/Kconfig</a>中关于<code>MBEDTLS_VER</code>的默认选项，懂得都懂。</p>
</blockquote>
<p dir="auto">这个函数看起来有被正确定义，那么为什么会找不到呢？抬头看上面的几行代码，发现有一行非常显眼的预编译指令：</p>
<pre><code class="language-c">#if defined(MBEDTLS_DEBUG_C)
</code></pre>
<p dir="auto">啊哈，看来可能是这个宏没定义造成的（实际上在这里已经被VSCode的代码高亮实锤了）。问题看来是这样的：<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/xr_skylark/src/net/nopoll/src/nopoll_conn.c" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/src/net/nopoll/src/nopoll_conn.c</a>这个文件使用了<code>mbedtls_debug_set_threshold</code>这个函数，但这个函数只在<code>MBEDTLS_DEBUG_C</code>被定义的情况下才可用，因此需要在某个地方打开这个宏（当然在相应文件删除掉这个函数的调用也是一种解决方法）。</p>
<p dir="auto">但是，在尝试搜索<code>MBEDTLS_DEBUG_C</code>的时候，会发现在<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/tree/master/xr806/xr_skylark/include/net/mbedtls-2.16.8/mbedtls/configs" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/include/net/mbedtls-2.16.8/mbedtls/configs</a>文件夹中定义了很多不同的配置，显然最终只会取到其中一个配置。那么到底是谁才是最终使用到的头文件呢？最终我们在<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/xr_skylark/src/net/mbedtls-2.16.8/Makefile" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/src/net/mbedtls-2.16.8/Makefile</a>中找到了答案：是<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/xr_skylark/include/net/mbedtls-2.16.8/mbedtls/configs/config-xr-mini-cliserv.h" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/include/net/mbedtls-2.16.8/mbedtls/configs/config-xr-mini-cliserv.h</a>这个文件。解决方案就很简单了：直接来到第113行，把<code>//</code>注释符干掉就行了。</p>
<p dir="auto">解决了这个问题，我们开心地重新编译<code>libSDK</code>，然后回到<code>sdk</code>目录重新二次编译，然后就结……等下，怎么又一个错误呢？定睛一看，这回的问题看起来在打包上：</p>
<pre><code>[OHOS ERROR] chmod 777 ../../../../../tools/mkimage &amp;&amp; ../../../../../tools/mkimage  -c .image.cfg -o xr_system.img
[OHOS ERROR] err: bin 1 and bin 2 were overlaped!
[OHOS ERROR] Overlapped size: 3072 Byte(3kB)
[OHOS ERROR] bin 1 name:app.bin    begin: 0x00008000    end: 0x00018C00
[OHOS ERROR] bin 2 name:app_xip.bin    begin: 0x00018000
[OHOS ERROR]
[OHOS ERROR] We've rearranged bin files and generated new cfg file 'image_auto_cal.cfg', the new one is recommended.
[OHOS ERROR] Generate image file failed
[OHOS ERROR] cfg string:
[OHOS ERROR] /*
[OHOS ERROR]  *
[OHOS ERROR]  * Automatically generated file; DO NOT EDIT.
[OHOS ERROR]  * XR806 SDK Configuration
[OHOS ERROR]  *
[OHOS ERROR]  */
[OHOS ERROR] {
[OHOS ERROR]     "magic" : "AWIH",
[OHOS ERROR]     "version" : "0.5",
[OHOS ERROR]  "OTA" : {"addr": "1536k", "size": "4K"},
[OHOS ERROR]     "image" : {"max_size": "1532k"},
[OHOS ERROR]     "section" :[
[OHOS ERROR]   {"id": "0xa5ff5a00", "bin" :"boot_40M.bin", "cert": "null", "flash_offs": "0K", "sram_offs": "0x00230000", "ep": "0x00230101", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5fe5a01", "bin" :"app.bin", "cert": "null", "flash_offs": "32K", "sram_offs": "0x00201000", "ep": "0x00201101", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5fd5a02", "bin" :"app_xip.bin", "cert": "null", "flash_offs": "96K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x2"},
[OHOS ERROR]   {"id": "0xa5fa5a05", "bin" :"wlan_bl.bin", "cert": "null", "flash_offs": "1070K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5f95a06", "bin" :"wlan_fw.bin", "cert": "null", "flash_offs": "1073K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
[OHOS ERROR]   {"id": "0xa5f85a07", "bin" :"sys_sdd_40M.bin", "cert": "null", "flash_offs": "1098K", "sram_offs": "0xffffffff", "ep": "0xffffffff", "attr":"0x1"},
[OHOS ERROR]   {}
[OHOS ERROR]  ]
[OHOS ERROR] }
</code></pre>
<p dir="auto">看样子，这里虽然报错了，但是顺手就告诉了你问题所在和解决方案：其实就是<code>app.bin</code>这个文件太大，导致原来的分区装不下了，这边只要使用自动生成好的<code>xr806/xr_skylark/project/demo/wlan_ble_demo/image/xr806/image_auto_cal.cfg</code>文件，替换掉原有的<a href="https://gitee.com/openharmony-sig/devboard_device_allwinner_xr806/blob/master/xr806/xr_skylark/project/demo/wlan_ble_demo/image/xr806/image_wlan_ble.cfg" target="_blank" rel="noopener noreferrer nofollow ugc">xr806/xr_skylark/project/demo/wlan_ble_demo/image/xr806/image_wlan_ble.cfg</a>就行啦。再来一次<code>hb build -f</code>，这回终于成！功！了！</p>
<p dir="auto">这回生成的<a href="/assets/uploads/files/1640024884378-xr_system_full.img">xr_system_full.img</a> ，老规矩放在这边让读者自取，只要按照之前步骤直接刷机就可以啦。</p>
<h3>demo完全体演示</h3>
<p dir="auto">这回我们挑个和WiFi有关的应用。首先，我们先让开发板通上网（也就是STA模式），这个只需要通过以下几行命令即可实现：</p>
<pre><code class="language-bash">hm net sta enable
# hm net scan # 需要搜索周围热点时可使用
hm net sta connect &lt;ssid&gt; &lt;psk&gt; # &lt;ssid&gt;和&lt;psk&gt;替换成热点的SSID和密码
</code></pre>
<blockquote>
<p dir="auto">注：</p>
<ol>
<li>关于<code>hm net</code>命令的用法，可以参考<a href="https://xr806.docs.aw-ol.com/study/soft_wifi/" target="_blank" rel="noopener noreferrer nofollow ugc">WiFi联网 - XR806</a>，当然直接看代码也不错。</li>
<li>这里显然只能搜到2.4G的网络，如果实在没有可用热点的话，也可以使用AP模式，具体就不再赘述了，看上面的文档就好。</li>
</ol>
</blockquote>
<p dir="auto">在运行后，我们可以得到如下log，说明已经成功分配了IP地址，正式连上网了：</p>
<pre><code>...
======== Callback: connected
[net INF] IPv6 addr state change: 0x0 --&gt; 0x1
[net INF] msg &lt;&gt;
[net INF] netif (IPv4) is up
[net INF] address: 192.168.31.156
[net INF] gateway: 192.168.31.1
[net INF] netmask: 255.255.255.0
[net INF] msg &lt;network IPv6 state&gt;
</code></pre>
<p dir="auto">下一步我们来演示<code>httpd</code>，也就是HTTP服务器的应用。这个说来简单，如果已经把完全体demo刷进去，只需要执行下面一行命令即可。</p>
<pre><code class="language-bash">net httpd 1
</code></pre>
<p dir="auto">接下来，我们直接访问<code>http://192.168.31.156</code>，稍等片刻，接下来就是见证奇迹的时刻：</p>
<p dir="auto"><img src="/assets/uploads/files/1640024898233-xr806-httpd-demo.png" alt="XR806 HTTPD Demo" class=" img-responsive img-markdown" width="1277" height="830" /></p>
<p dir="auto">当然，这个demo里面还有非常多值得一试的功能，等待读者慢慢发掘。</p>
<h1>总结</h1>
<p dir="auto">本文梳理了XR806的编译过程，并且通过不懈努力总算编译好了完全体demo，得到的回报是充分尝试了SDK支持的各种功能。如果还有后续文章的话，我想尝试一下这个移植好的<code>shttpd</code>，看看能不能在上面搭建更多有趣的应用。</p>
]]></description><link>https://bbs.aw-ol.com/topic/824/在wsl上编译并运行xr806的完全体demo</link><generator>RSS for Node</generator><lastBuildDate>Thu, 18 Jun 2026 01:50:11 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/824.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Dec 2021 18:30:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 在WSL上编译并运行XR806的完全体demo on Wed, 29 Dec 2021 05:04:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/720">@i513536373</a> 这问题有解决吗，我也遇到了</p>
]]></description><link>https://bbs.aw-ol.com/post/3763</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/3763</guid><dc:creator><![CDATA[xisecret]]></dc:creator><pubDate>Wed, 29 Dec 2021 05:04:35 GMT</pubDate></item><item><title><![CDATA[Reply to 在WSL上编译并运行XR806的完全体demo on Wed, 22 Dec 2021 18:01:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/720">@i513536373</a> 编译不成功的现象是？贴一下错误信息吧。</p>
]]></description><link>https://bbs.aw-ol.com/post/3633</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/3633</guid><dc:creator><![CDATA[metro]]></dc:creator><pubDate>Wed, 22 Dec 2021 18:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to 在WSL上编译并运行XR806的完全体demo on Wed, 22 Dec 2021 02:51:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/720">@i513536373</a> 在 <a href="/post/3616">在WSL上编译并运行XR806的完全体demo</a> 中说：</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/701">@metro</a> 请问楼主是怎么在WLS下编译成功的，现在我遇到2个问题，第一是编译不成功，第二是makeimage运行不起来。错误如下：<br />
[OHOS INFO] [251/252] ACTION //device/xradio/xr806:libSDK(//build/lite/toolchain:arm-none-eabi-gcc)<br />
[OHOS ERROR] [251/252] ACTION //device/xradio/xr806:libSDK(//build/lite/toolchain:arm-none-eabi-gcc)<br />
[OHOS ERROR] FAILED: obj/device/xradio/xr806/libSDK_build_ext_components.txt</p>
<p dir="auto">[OHOS ERROR] true &amp;&amp; <br />
[OHOS ERROR] chmod 777 ../../../../../tools/mkimage &amp;&amp; ../../../../../tools/mkimage  -c .image.cfg -o xr_system.img<br />
[OHOS ERROR] /bin/sh: 5: ../../../../../tools/mkimage: Exec format error<br />
[OHOS ERROR] ../../../../project/project.mk:519: recipe for target 'image' failed</p>
</blockquote>
<p dir="auto">不好意思，makeimage这个问题你文中有说明，现在就是第一个问题不知道是什么情况。</p>
]]></description><link>https://bbs.aw-ol.com/post/3617</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/3617</guid><dc:creator><![CDATA[i513536373]]></dc:creator><pubDate>Wed, 22 Dec 2021 02:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to 在WSL上编译并运行XR806的完全体demo on Wed, 22 Dec 2021 02:47:20 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/701">@metro</a> 请问楼主是怎么在WLS下编译成功的，现在我遇到2个问题，第一是编译不成功，第二是makeimage运行不起来。错误如下：<br />
[OHOS INFO] [251/252] ACTION //device/xradio/xr806:libSDK(//build/lite/toolchain:arm-none-eabi-gcc)<br />
[OHOS ERROR] [251/252] ACTION //device/xradio/xr806:libSDK(//build/lite/toolchain:arm-none-eabi-gcc)<br />
[OHOS ERROR] FAILED: obj/device/xradio/xr806/libSDK_build_ext_components.txt</p>
<p dir="auto">[OHOS ERROR] true &amp;&amp; <br />
[OHOS ERROR] chmod 777 ../../../../../tools/mkimage &amp;&amp; ../../../../../tools/mkimage  -c .image.cfg -o xr_system.img<br />
[OHOS ERROR] /bin/sh: 5: ../../../../../tools/mkimage: Exec format error<br />
[OHOS ERROR] ../../../../project/project.mk:519: recipe for target 'image' failed</p>
]]></description><link>https://bbs.aw-ol.com/post/3616</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/3616</guid><dc:creator><![CDATA[i513536373]]></dc:creator><pubDate>Wed, 22 Dec 2021 02:47:20 GMT</pubDate></item></channel></rss>