WSL上基于Ubuntu18.04搭建arm虚拟环境

本文详细介绍了如何在Windows上的WSL环境中配置ARM交叉编译环境,包括安装32位支持、交叉编译工具链、QEMU模拟器以及图形界面。同时,还讲解了如何在Ubuntu中使用gdb调试ARM程序,并解决可能出现的问题,如权限、依赖和命令未找到等。


)

引言

由于平时使用win10较多,电脑可能带不动虚拟机,所以寻找了一个wsl下做arm虚拟环境开发方案。所谓工欲善其事必先利其器

WSL配置

可参考在Windows10上用WSL优雅开发

查看系统信息

# 安装screenfetch
sudo apt install screenfetch
# 启动sceenfetch
screenfetch

ARM交叉编译环境搭建

为Ubuntu开启32位支持(非必要)

sudo dpkg --add-architecture i386

安装32位的库和宿主的工具(非必要)

# 宿主开发环境
sudo apt install -y build-essential
# 32位库
sudo apt install -y lib32ncurses5 lib32z1
sudo apt install -y lib32stdc++6

安装交叉编译工具链

# 安装gcc
sudo apt install gcc
# 安装arm-linux-gcc
sudo apt-get install gcc-arm-linux-gnueabihf
# 安装arm-linux-g++
sudo apt-get install g++-arm-linux-gnueabihf

如果出现
:::
E:Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
:::
那么可以运行以下代码修复依赖

sudo apt-get update  --fix-missing 

检查安装

# 查看gcc版本
gcc -v
# 查看arm-linux-gcc版本
arm-linux-gnueabihf-gcc -v
# 查看arm-linux-g++版本
arm-linux-gnueabihf-g++ -v

执行下面的代码建立软链接,否则后面执行的时候会报动态库找不到的错误:

sudo ln -s /usr/arm-linux-gnueabihf/lib/libc.so.6 /lib/libc.so.6
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3

安装arm模拟器qemu

sudo apt-get install qemu

注意:qemu是需要图形界面的,所以需要装一个图形界面。

为WSL安装图形界面
  • 1.在windows上安装VcXsrv
    原理是WSL会把界面信息发送给VcXsrv,由VcXsrv来绘制界面
    Windows上打开XLaunch,一般选择Multiple Window,然后一直下一步,也可以根据提示保存默认配置,之后不用重复配置。
    XLaunch会一直在后台运行,要启动WSL图形界面,是需要确定XLaunch启动了。

  • 2.在WSL上安装xfce desktop,选择xfce4桌面,它的优点是轻量、美观、占用系统资源少

sudo apt-get install xfce4-terminal
sudo apt-get install xfce4
sudo apt install dbus-x11

为了方便,打开Ubuntu bash,运行如下代码:

echo "export DISPLAY=:0.0" >> ~/.bashrc

这样,每次打开图形界面程序就不需要额外指定DISPLAY了。

之后需要关掉所有bash重启wsl!!!

  • 运行
startxfce4

或者

xfce4-session

:::
https://blog.csdn.net/yq_forever/article/details/103632662

https://blog.csdn.net/w_weilan/article/details/82862913

https://www.jianshu.com/p/8404e34feefe

:::

gdb调试arm程序

在Ubuntu上用gdb调试arm程序的原理:qemu端作为gdb server启动可执行程序,另一端作为gdb client连接gdb server,进行本地远程调试。

  • 1.首先安装多平台的gdb工具
sudo apt-get install gdb-multiarch

:::
gdb-multiarch
顾名思义,它是gdb支持多中硬件体系架构的版本。之所以要安装gdb-multiarch,是因为Ubuntu默认安装的gdb只支持x86/x64架构
:::

  • 2.编译代码,注意加上参数–static。加上这个参数后,生成的可执行文件为静态链接的。如果不加这个参数,gdb调试的时候单步执行功能不正常,符号表也找不到。
arm-linux-gnueabihf-gcc 编译文件 -static -o 输出文件 -nostdlib 
  • 3.启动qemu,-g指明了gdb的监听端口,这里选择的是1234
qemu-arm -g 1234 编译的输出文件
  • 4.新开一个命令行窗口,启动gdb client,进入gdb交互界面
gdb-multiarch 编译的输出文件

在gdb交互界面输入以下内容就可以连接到server端

target remote localhost:1234

简单介绍几个常用的 gdb 指令:
(gdb) disassemble // 查看反汇编
(gdb) x /8xw 0x0000808e // 查看内存 (可查具体参数)
(gdb) info register // 查看寄存器
(gdb) continue // 继续执行
(gdb) stepi // 汇编级逐过程
(gdb) nexti // 汇编级逐语句

  • 最后远程sftp服务,其实win10已经挂载在wsl的mnt上,所以sftp服务可有可无

issues

  • su: Authentication failure
    这个问题产生的原因是由于ubtun系统默认是没有激活root用户,需要我们手工进行操作sudo passwd,初始化root。
    :::
    https://blog.csdn.net/cjmcp/article/details/17655187

https://blog.csdn.net/huijiaaa1/article/details/81106337?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

:::

  • qemu: command not found
    建立一条软链接:
sudo ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu 

然后再

vi /etc/profile 

添加一行

export PATH=$PATH:/usr/bin/qemu 

再使用

source /etc/profile 

使其生效,就可以使用qemu命令了

  • VIM编辑文件权限问题:“E45: ‘readonly’ option is set (add ! to override)”
    解决方案, :q! 强制关闭文件后,在命令行里输入:sudo !! 后回车再次vim打开文件编辑就正常
    或者在root权限下wq!强制保存退出
    ::: tip 解决
    https://blog.csdn.net/museions/article/details/90313476?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1328767.28821.16174542906693085&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

https://blog.csdn.net/u012569217/article/details/77530004

:::

  • 跨平台仿真arm文件,运行时报错:/lib/ld-linux-armhf.so.3: No such file or directory

编译的时候:

错误编译:arm-linux-gnueabihf-gcc -o ,没有-static

正确编译:arm-linux-gnueabihf-gcc -static -o 需要-static静态参数

::: tip 参考文章
WSL搭建嵌入式开发环境

https://www.jianshu.com/p/d4d892e10adb

https://cloud.tencent.com/developer/article/1578333

:::

<think>嗯,用户想在Ubuntu 18.04上安装和配置Xinference。我需要先回忆一下Xinference的安装步骤,特别是针对Ubuntu系统的。根据提供的引用内容,用户提到了需要安装基础依赖,以及可能的ggml和PyTorch支持。引用[1]中提到,安装基础依赖后,可以通过pip安装不同的版本,比如"xinference[ggml]"或者"xinference[pytorch]",还有"xinference[all]"一次性安装所有依赖。 首先,我应该检查用户的操作系统是否符合要求。用户使用的是Ubuntu 18.04,属于x86架构,根据引用[2],这个镜像支持32/64位x86架构,所以没问题。如果是ARM或者其他架构的话可能需要其他步骤,但这里不需要考虑。 接下来,安装步骤可能包括安装Python和pip,因为Xinference是通过pip安装的。Ubuntu 18.04默认的Python版本可能比较旧,可能需要用户安装Python 3.7或更高版本。此外,可能需要安装一些系统依赖库,比如开发工具和Python的开发文件,比如python3-dev、python3-venv等,这些可以通过apt-get安装。 然后,用户需要创建虚拟环境,这有助于隔离依赖。使用python3 -m venv创建,然后激活环境。接着,用pip安装Xinference的基础包,并根据需要添加ggml或pytorch的支持。比如,用户如果想使用PyTorch推理,就需要安装"xinference[pytorch]"。 安装完成后,需要启动Xinference服务,可能通过xinference命令。然后,根据引用[1],还需要下载并部署模型,比如baichuan-chat-3B,这可能需要额外的步骤,比如使用命令行参数指定模型名称和大小。 用户可能遇到的常见问题包括依赖冲突、Python版本不兼容、或者模型下载失败。需要提醒用户注意网络连接,以及可能的代理设置。此外,如果用户使用的是WSL2,可以参考引用[3]中的文档,虽然用户的问题是关于Ubuntu 18.04的,但WSL的情况可能也需要提及,如果有相关的问题。 另外,需要检查是否有Ubuntu 18.04特有的问题,比如较旧的库版本是否与Xinference的依赖兼容。如果用户遇到问题,建议升级系统包,或者使用虚拟环境来管理Python依赖。 最后,确保用户知道如何验证安装是否成功,比如启动服务后访问本地端口,或者使用命令行检查服务状态。可能还需要指导如何下载模型,并提供一个示例命令,例如xinference launch --model-name baichuan-chat --size-in-billions 3。 总结步骤应该是:1. 安装系统依赖;2. 创建虚拟环境;3. 安装Xinference和所需模块;4. 启动服务;5. 下载模型。同时,需要提醒用户注意Python版本、网络问题以及可能的依赖冲突。</think>以下是在 Ubuntu 18.04 上安装配置 Xinference 的详细步骤: ### 一、环境准备 1. 更新系统软件包 ```bash $ sudo apt-get update && sudo apt-get upgrade -y ``` 2. 安装基础依赖 ```bash $ sudo apt-get install python3.8 python3-pip python3-venv git curl -y # Ubuntu 18.04 默认 Python 3.6,需手动安装 3.8 ``` ### 二、创建虚拟环境 ```bash $ python3.8 -m venv xinference-env $ source xinference-env/bin/activate ``` ### 三、安装 Xinference 1. 安装基础包(必须) ```bash $ pip install xinference ``` 2. 按需选择安装模式: ```bash # GGML 推理支持 $ pip install "xinference[ggml]" # 或 PyTorch 推理支持 $ pip install "xinference[pytorch]" # 或完整安装 $ pip install "xinference[all]" ``` ### 四、启动服务 ```bash $ xinference-local --host 0.0.0.0 --port 9997 ``` ### 五、部署模型(以 baichuan-chat-3B 为例) ```bash $ xinference launch --model-name "baichuan-chat" --size-in-billions 3 ``` §§ 注意事项 §§ 1. 若使用 WSL2,需参考[Windows WSL2安装指南](https://blog.csdn.net/xxx)配置Linux子系统[^3] 2. 模型下载需要稳定网络连接,国内用户建议配置代理 3. 完整依赖安装需要至少 8GB 可用磁盘空间 §§ 相关问题 §§ 1. 如何验证 Xinference 是否安装成功? 2. 如何在 Xinference 中使用自定义模型? 3. 如何解决 Ubuntu 18.04 安装过程中的依赖冲突问题? 4. Xinference 支持哪些 GPU 加速方案?
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J先生x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值