summaryrefslogtreecommitdiffstats
path: root/code/projects/lcm_compile.html
diff options
context:
space:
mode:
Diffstat (limited to 'code/projects/lcm_compile.html')
-rw-r--r--code/projects/lcm_compile.html24
1 files changed, 13 insertions, 11 deletions
diff --git a/code/projects/lcm_compile.html b/code/projects/lcm_compile.html
index d889b58..7aa390a 100644
--- a/code/projects/lcm_compile.html
+++ b/code/projects/lcm_compile.html
@@ -7,14 +7,15 @@
7 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
8 <title>LCM 交叉编译</title> 8 <title>LCM 交叉编译</title>
9 <link rel="stylesheet" href="https://www.qin-juan-ge-zhu.top/common/CSS/pandoc.css"> 9 <link rel="stylesheet" href="https://www.qin-juan-ge-zhu.top/common/CSS/pandoc.css">
10 <script type="text/javascript" src="https://hl.qin-juan-ge-zhu.top/myset/myhighlight.js"></script>
11 <script type="text/javascript" src="https://www.qin-juan-ge-zhu.top/common/script4code.js"></script> 10 <script type="text/javascript" src="https://www.qin-juan-ge-zhu.top/common/script4code.js"></script>
12</head> 11</head>
13 12
14<body> 13<body>
15 <div class="pandoc"> 14 <div class="pandoc">
16 <div class="main"> 15 <div class="main">
17 <p class="title">LCM 交叉编译</p> 16 <header id="title-block-header">
17 <p class="title">LCM 交叉编译</p>
18 </header>
18 <!-- 编译集成lcm模块 --> 19 <!-- 编译集成lcm模块 -->
19 <h1 id="lcm-简介">LCM 简介</h1> 20 <h1 id="lcm-简介">LCM 简介</h1>
20 <p>LCM(Lightweight Communications and 21 <p>LCM(Lightweight Communications and
@@ -28,13 +29,13 @@
28 <li><a href="https://zhuanlan.zhihu.com/p/621943685">一篇博客</a></li> 29 <li><a href="https://zhuanlan.zhihu.com/p/621943685">一篇博客</a></li>
29 </ul> 30 </ul>
30 <h1 id="依赖项安装">依赖项安装</h1> 31 <h1 id="依赖项安装">依赖项安装</h1>
31 <pre><code>sudo apt update 32 <pre><code class="language-bash">sudo apt update
32sudo apt upgrade 33sudo apt upgrade
33sudo apt install build-essential cmake libglib2.0-dev 34sudo apt install build-essential cmake libglib2.0-dev
34sudo apt install openjdk-8-jdk # lcm仅支持jdk8</code></pre> 35sudo apt install openjdk-8-jdk # lcm仅支持jdk8</code></pre>
35 <h1 id="x86-的-lcm">x86 的 lcm</h1> 36 <h1 id="x86-的-lcm">x86 的 lcm</h1>
36 <p>如果我们仅仅需要 x86 架构的 lcm,执行下列命令即可:</p> 37 <p>如果我们仅仅需要 x86 架构的 lcm,执行下列命令即可:</p>
37 <pre><code>git clone https://github.com/lcm-proj/lcm 38 <pre><code class="language-bash">git clone https://github.com/lcm-proj/lcm
38cd lcm 39cd lcm
39mkdir build &amp;&amp; cd build 40mkdir build &amp;&amp; cd build
40cmake .. 41cmake ..
@@ -48,14 +49,14 @@ sudo make install</code></pre>
48 <p>lcm-spy 是 LCM 配套的数据可视化工具。 可以通过 lcm-spy 监视 lcm 数据发送频率、数据量、数据结构,甚至实时画图。 如果安装了 JAVA,则 lcm-spy 会连同 LCM 一同被安装。 49 <p>lcm-spy 是 LCM 配套的数据可视化工具。 可以通过 lcm-spy 监视 lcm 数据发送频率、数据量、数据结构,甚至实时画图。 如果安装了 JAVA,则 lcm-spy 会连同 LCM 一同被安装。
49 </p> 50 </p>
50 <p>启动 lcm-spy:</p> 51 <p>启动 lcm-spy:</p>
51 <pre><code>export CLASSPATH=${your lcm-type class path} 52 <pre><code class="language-bash">export CLASSPATH=${your lcm-type class path}
52lcm-spy</code></pre> 53lcm-spy</code></pre>
53 <h1 id="交叉编译">交叉编译</h1> 54 <h1 id="交叉编译">交叉编译</h1>
54 <p>既然 lcm 用的是 cmake,何不交叉编译到 OHOS 里用呢?</p> 55 <p>既然 lcm 用的是 cmake,何不交叉编译到 OHOS 里用呢?</p>
55 <p>首先,我们可以设置一下 Native Development Kit(NDK)的路径:</p> 56 <p>首先,我们可以设置一下 Native Development Kit(NDK)的路径:</p>
56 <pre><code># 设置成自己的NDK工具目录 57 <pre><code class="language-bash"># 设置成自己的NDK工具目录
57export OHOS_ROOT=~/app/native</code></pre> 58export OHOS_ROOT=~/app/native</code></pre>
58 <pre><code>$OHOS_ROOT/build-tools/cmake/bin/cmake \ 59 <pre><code class="language-bash">$OHOS_ROOT/build-tools/cmake/bin/cmake \
59 -DOHOS_STL=c++_shared \ 60 -DOHOS_STL=c++_shared \
60 -DOHOS_ARCH=armv8-a \ 61 -DOHOS_ARCH=armv8-a \
61 -DOHOS_PLATFORM=OHOS \ 62 -DOHOS_PLATFORM=OHOS \
@@ -66,7 +67,7 @@ export OHOS_ROOT=~/app/native</code></pre>
66 <p>解决方案自然是自己手动交叉编译<code>libglib2.0-dev</code>。</p> 67 <p>解决方案自然是自己手动交叉编译<code>libglib2.0-dev</code>。</p>
67 <h2 id="glib2.0-交叉编译">Glib2.0 交叉编译</h2> 68 <h2 id="glib2.0-交叉编译">Glib2.0 交叉编译</h2>
68 <p>从<a href="https://download.gnome.org/sources/glib/">官网</a>下载 glib-2.79.2 源码,解压后进入源码目录。</p> 69 <p>从<a href="https://download.gnome.org/sources/glib/">官网</a>下载 glib-2.79.2 源码,解压后进入源码目录。</p>
69 <pre><code>mkdir glib &amp;&amp; cd glib 70 <pre><code class="language-bash">mkdir glib &amp;&amp; cd glib
70wget https://download.gnome.org/sources/glib/2.79/glib-2.79.2.tar.xz 71wget https://download.gnome.org/sources/glib/2.79/glib-2.79.2.tar.xz
71tar -xvf glib-2.79.2.tar.xz 72tar -xvf glib-2.79.2.tar.xz
72mkdir build</code></pre> 73mkdir build</code></pre>
@@ -78,7 +79,7 @@ mkdir build</code></pre>
78 <p>接着,参考博客<a 79 <p>接着,参考博客<a
79 href="https://t.csdnimg.cn/YfSJC">这篇博客</a>,撰写如下<kbd>meson_ohos.txt</kbd>(友情提醒,使用该文件时把<kbd>native</kbd>也就是 80 href="https://t.csdnimg.cn/YfSJC">这篇博客</a>,撰写如下<kbd>meson_ohos.txt</kbd>(友情提醒,使用该文件时把<kbd>native</kbd>也就是
80 NDK 的路径修改为自己的路径、源平台与目标平台按需修改):</p> 81 NDK 的路径修改为自己的路径、源平台与目标平台按需修改):</p>
81 <pre><code>[binaries] 82 <pre><code class="language-meson">[binaries]
82c = &#39;$OHOS_ROOT/llvm/bin/aarch64-unknown-linux-ohos-clang&#39; 83c = &#39;$OHOS_ROOT/llvm/bin/aarch64-unknown-linux-ohos-clang&#39;
83cpp = &#39;$OHOS_ROOT/llvm/bin/aarch64-unknown-linux-ohos-clang++&#39; 84cpp = &#39;$OHOS_ROOT/llvm/bin/aarch64-unknown-linux-ohos-clang++&#39;
84ar = &#39;$OHOS_ROOT/llvm/bin/llvm-ar&#39; 85ar = &#39;$OHOS_ROOT/llvm/bin/llvm-ar&#39;
@@ -102,15 +103,16 @@ cpu_family = &#39;aarch64&#39;
102cpu = &#39;armv8a&#39; 103cpu = &#39;armv8a&#39;
103endian = &#39;little&#39;</code></pre> 104endian = &#39;little&#39;</code></pre>
104 <p>将该文件放置在<kbd>glib-2.79.2</kbd>源码目录下,而后在<kbd>build</kbd>目录下执行以下命令:</p> 105 <p>将该文件放置在<kbd>glib-2.79.2</kbd>源码目录下,而后在<kbd>build</kbd>目录下执行以下命令:</p>
105 <pre><code>meson --cross-file=../glib-2.79.2/meson_ohos.txt .. 106 <pre><code class="language-bash">meson --cross-file=../glib-2.79.2/meson_ohos.txt ..
106ninja</code></pre> 107ninja</code></pre>
107 <p>编译完成,正确地安装 glib2 到交叉编译工具链中(???),之后我们回到 lcm 的源码目录,重新执行 cmake 命令:</p> 108 <p>编译完成,正确地安装 glib2 到交叉编译工具链中(???),之后我们回到 lcm 的源码目录,重新执行 cmake 命令:</p>
108 <pre><code>$OHOS_ROOT/build-tools/cmake/bin/cmake \ 109 <pre><code class="language-bash">$OHOS_ROOT/build-tools/cmake/bin/cmake \
109 -DOHOS_STL=c++_shared \ 110 -DOHOS_STL=c++_shared \
110 -DOHOS_ARCH=armv8-a \ 111 -DOHOS_ARCH=armv8-a \
111 -DOHOS_PLATFORM=OHOS \ 112 -DOHOS_PLATFORM=OHOS \
112 -DCMAKE_TOOLCHAIN_FILE=$(find $OHOS_ROOT -name &quot;ohos.toolchain.cmake&quot;)</code></pre> 113 -DCMAKE_TOOLCHAIN_FILE=$(find $OHOS_ROOT -name &quot;ohos.toolchain.cmake&quot;)</code></pre>
113 <p>这次,编译成功了。万岁!</p> 114 <p>这次,编译成功了。万岁!</p>
115 <p class="time">2024.4</p>
114 <script src="https://www.qin-juan-ge-zhu.top/common/js/comment.js"></script> 116 <script src="https://www.qin-juan-ge-zhu.top/common/js/comment.js"></script>
115 </div> 117 </div>
116 </div> 118 </div>