RK3568笔记八十: Linux 小智AI环境搭建

发布于:2025-03-27 ⋅ 阅读:(36) ⋅ 点赞:(0)

若该文为原创文章,转载请注明原文出处。

最近小智AI火了,韦老师出了 Linux 小智 AI 聊天机器人 版本,想移植到 RK3568上,

由于和韦老师硬件不同,所以需要交叉编译一些库,为后续移植做准备。

一、环境

1、硬件: 正点原子ATK-DLRK3568

2、环境:buildroot

3、虚拟机:正点原子自带

二、源码

100askTeam/xiaozhi-linux: Embedded Linux AI Xiaozhi Intelligent voice dialogue.

根据源码,需要编译的库有:speexdsp, websocketpp, boost, curl, opensll,opus等。

三、交叉编译

1、speexdsp编译

1)、下载代码

https://www.speex.org/downloads/

2)、编译

tar xvf speexdsp-1.2.1.tar.gz
 cd speexdsp-1.2.1/
export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc
./configure --prefix=/opt/arm_libspeexdsp --host=arm-linux   --disable-oggtest
make
sudo make install

为了方便,所以编译出来的include和lib文件全部拷贝到工具链下,不用在指定include和lib位置

2、boost编译

使用websocketpp此库需要使用boost库进行编译

编译参考:websocketpp的使用和boost库的交叉编译_websocke交叉编译-CSDN博客

cd boost_1_73_0
export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc
./bootstrap.sh --show-libraries  //查看当前boost库中已经包含的库
/bootstrap.sh --prefix=/opt/lib_boost # 使用此命令可以指定boost库的安装如果不使用默认路径是/usr/local/include 和 /usr/local/lib,分别存放头文件和各种库

# 需要修改文件“project-config.jam”
找到并修改:
if ! gcc in [ feature.values <toolset> ]
{
    using gcc : : /opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ ;
}

./b2
./b2 install

编译会出错,但库有编译出来,同样把include和lib拷贝到atk-dlrk356x-toolchain的对应目录下

3、libopenssl编译

网上直接下载源码

编译过程:

export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc
./config no-asm -shared --prefix=/opt/arm_openssl
make 
sudo make install


出错: arm-linux-gnueabihf-gcc: error: unrecognized command line option '-m64 ”-m64“错误,原因是虚拟机是64位,要编译的是32位。 处理: 进入makefile,删除文件里所有-m64,在重新编译。 为什么要编译ssl,编译srt时需要用到 。

4、curl编译

cd curl-7.85.0

CPPFLAGS="-I/opt/arm_openssl/include" \
LDFLAGS="-L/opt/arm_openssl/lib" \
LIBS="-ldl" \
./configure --host=arm-linux \
CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc \
CXX=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ \
--with-ssl \
--enable-shared \
--enable-static \
--disable-dict \
--disable-ftp \
--disable-imap \
--disable-ldap \
--disable-ldaps \
--disable-pop3 \
--disable-proxy \
--disable-rtsp \
--disable-smtp \
--disable-telnet \
--disable-tftp \
--disable-zlib \
--without-ca-bundle \
--without-gnutls \
--without-libidn \
--without-librtmp \
--without-libssh2 \
--without-nss \
--prefix=/opt/arm_libcurl

make 

sudo make install

5、文件拷贝

把编译后的include和lib拷贝到atk-dlrk356x-toolchain的对应目录下

/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/usr/include

/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/usr/lib

6、websocketapp库

下载https://github.com/zaphoyd/websocketpp

下载后,把websocketpp目录下的文件全部拷贝到/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/usr/include

对接WebSocket时会用到。

至此,所有的库都编译完成了,接下来是编译xiaozhi-linux源码和测试。

移植编译过程中还用到了opus库,但在工具链里已经有了库文件,所以没重新交叉编译。

把编译好的库也需要拷贝到开发板上。

如有侵权,或需要完整代码,请及时联系博。


网站公告

今日签到

点亮在社区的每一天
去签到