嵌入式多平台云开发

为了不被开发主机限制,做到有网便能开发。购买了一年的阿里云服务器,实现嵌入式云开发。实现云编译是比较容易的,和在本地主机上一样,无非是服务器只能使用命令行界面;此次的目标是实现多平台云编译,环境互不影响易保存是关键。docker容器具有沙箱特性,容器互不影响,所以将嵌入式平台开发环境安装在容器中,在容器中编译。

服务器配置目标
8核、16G内存、100G硬盘、ubuntu20.04实现多平台云编译,云编辑

1、实现嵌入式多平台云编译

安装Docker环境

安装docker

sudo apt install docker.io

通过修改daemon配置文件/etc/docker/daemon.json来设置镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://c64zf1n6.mirror.aliyuncs.com"]
}

重启docker守护进程

systemctl daemon-reload 
systemctl restart docker

制作编译容器

基于ubuntu镜像安装

docker run -it \
--name build \
--hostname build \
-p 5002:22 \
-v "/root/workspaces:/root/workspaces" \
ubuntu \
/bin/bash

设置容器名--name build

设置容器主机名--hostname build

设置挂载工作目录-v "/root/workspaces:/root/workspaces"

设置端口映射-p 5002:22

安装openssh-server

方便调试时远程登陆编译

apt install openssh-server
apt install vim
vim /etc/ssh/sshd_config

添加如下

PubkeyAuthentication yes #启用公钥私钥配对认证方式 
AuthorizedKeysFile .ssh/pub_key #公钥文件路径(和上面生成的文件同) 
PermitRootLogin yes #root能使用ssh登录
ClientAliveInterval 60  #参数数值是秒 , 是指超时时间
ClientAliveCountMax 3 #设置允许超时的次数

添加ssh公钥

vim /root/.ssh/pub_key

启动ssh服务

service ssh start

编译示例

进入编译容器

docker exec -it build /bin/bash

安装依赖,省略;编译,stm32mp157 kernel

202205132045226.png

2、实现云编辑

大多数嵌入式开发员使用sourceinsight分析大型工程源码,但在服务器上显然不能使用这种方式。所以寻找一种前后端分离的编辑器,这里使用code server,可以理解为网页板的vscode,后端运行在服务器,前端网页显示。前后端分离是下一代编辑器必备特性哈

code server

安装code server

这里直接使用Docker Hub上的镜像

拉取镜像

docker pull codercom/code-server

创建容器

docker run -it --name code-server -p 1234:8080 \
  -v "/root/code_server/.config:/home/coder/.config" \
  -v "/root/workspaces:/home/coder/project" \
  -u "$(id -u):$(id -g)" \
  -e "DOCKER_USER=$USER" \
  -e "PASSWORD=*****" \
  codercom/code-server

指定挂载目录-v "/root/workspaces:/home/coder/project",将主机的workspaces目录挂载到容器project目录

设置用户名-e "DOCKER_USER=$USER"

设置登陆密码-e "PASSWORD=*****"

登陆

如下图所示,编辑界面和vscode一致,快捷键也是相同的

微信截图_20220513205830

修改chrome快捷方式,以APP形式启动

"chrome.exe" --app=http://139.224.30.179:1234/

注意!:如果出现鼠标侧键退出到登录,则运行多个,保留略过登录的,再关闭其他的(抽象的描述,自行体会)

安装clangd插件

为了使vscode具备和sourceinsight一样的代码跳转速度;这里使用clangd插件,速度飞快,同时更加精准

code-server自带应用商店包含的插件较少,可以在vscode插件下载网站下载搜索clangd下载安装,是兼容的

微信截图_20220513211500

settings.json文件配置插件,特性全开,所点即所得,无延迟

{
        "clangd.arguments": [
                "--background-index",
                "--compile-commands-dir=${workspaceFolder}",
                "-j=8",
                "--all-scopes-completion",
                "--completion-style=detailed",
                "--header-insertion=iwyu",
                "--pch-storage=memory",
                "--cross-file-rename",
                "--enable-config",
                "--fallback-style=WebKit",
                "--pretty",
                "--clang-tidy"
        ],
        "clangd.path": "clangd-11"
}

除此之外,clangd插件只用于显示,还得在code-server容器里安装clangdbear

apt install clangd-11
apt install bear

clangd通过compile_commands.json文件解析代码,这个文件描述了编译信息;在make命令前加bear命令,可生成此文件

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bear -a make UIMAGE_LOADADDR=0x8000 uImage -j8

除此之外,clangd还具有代码静态分析功能,借此功能,可减少debug时间

微信截图_20220514100516

3、其他

CI-CD

如果是团队开发,可能需要持续集成;安装gitlab-cigitlab-running可以很方便的做到,通过网页界面,查看编译流水线,下载编译产物

对于个人开发者,不需要CI-CD功能,CI-CD会占用大量服务器资源,得不偿失

文件共享

如何将服务器上编译的产物下载下来呢?这里使用File Browser网页文件管理工具,相当于私有云盘

安装

docker pull filebrowser/filebrowser
docker run -d -v /root/workspaces/share:/srv -v /root/file_browser/config.json:/etc/config.json -v /root/file_browser/database.db:/etc/database.db -p 3030:80 filebrowser/filebrowser

关注博主公众号,优质文章不断更新
在这里插入图片描述

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

最好有梦想~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值