操作系统:Linux(Ubuntu-22.04.2-desktop-amd64)
CMake版本:3.16.3-Linux-x86_64
Docker版本:24.0.2, build cb74dfc
项目Git:https://gitlab.navinfo.com/businesslogic/hongqi_location
主要角色:cmake、sh、docker容器、make、maploc可执行文件
由于run_cmake_hongqi-aos.sh需要用到交叉编译,因此编译步骤为:运行docker -> 拷贝项目代码 -> 运行cmake脚本 -> 到build/hongqi-aos执行make -> 生成maploc可执行文件
run_cmake.sh和上述步骤不一样,它不依赖docker环境,可以通过Linux系统自带gcc、g++编译,且cmake脚本执行完后需要用到ninja-build
run_cmake.sh的编译步骤为:项目代码 -> 运行cmake脚本 -> 到build/linux执行ninja -> 生成maploc可执行文件
安装CMake
创建一个文件夹cmake并cd到该目录下,执行:
wget https://cmake.org/files/v3.16/cmake-3.16.3-Linux-x86_64.sh
下载完成后执行该脚本:
sh cmake-3.16.3-Linux-x86_64.sh
执行完成后会生成文件夹:cmake-3.16.3-Linux-x86_64
此时需要修改.bashrc,最底部添加:
export PATH=/home/geniune/cmake/cmake-3.16.3-Linux-x86_64/bin:$PATH
保存后
source .bashrc
此时可以查看CMake命令行是否可行:
cmake -version
输出:cmake version 3.16.3
安装docker
执行以下代码
sudo apt-get update
HTTPS
sudo apt-get install ca-certificates curl gnupg lsb-release
安装证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
写入阿里云镜像源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
查看docker版本
sudo docker version
加载到image镜像
docker load -i aos-docker-arm-dev-nj-0401.tar.gz
查看image镜像
sudo docker images
运行镜像
sudo docker run -it 10.78.4.163:8080/adl3/had-j5/aos-docker-arm-dev-nj:1.1 /bin/bash
运行起来后,前缀会变成:root@21bce6208277:/open_explorer# 说明运行成功
查看当前容器
sudo docker ps -a
注意:这里的:“21bce6208277”是容器ID
将hongqi_lcoation项目代码复制到容器目录下
sudo docker cp hognqi_location/ 21bce6208277:/open_explorer/
然后在docker环境下,cd到hognqi_location/cmake目录下,执行:
给予hongqi_location目录下权限
chmod 777 -R *
运行CMake脚本:
//Debug
sh run_cmake_hongqi-aos.sh
//Release
sh run_camke_hongqi-aos.sh -DCMAKE_BUILD_TYPE=Release
注意:该步骤需要需要连接VPN(EasyConnect)
由于hdmap放在ftp服务器上,更新后需要手动修改hognqi_lcoation/hdmap/CMakeLists.txt文件第7行RELEASE_DATE
参数改为对应的日期
set(RELEASE_DATE 20230522)
完成后项目目录下会生成一个新文件夹:build
执行make
cd build/hongqi_aos
make
这里以CMake Debug为例,运行完成后会生成一个Debug文件夹,分别有以下文件:
通过SSH连接到主板,账号密码均为root
ssh root@10.78.0.53
在主板上运行:
./maploc config.ini
config.ini 文件可以控制log输出
#改成0即可
ConsoleOutput=1
注意:ctrl+c并不会影响其本身进程,所以为了结束maploc需要主动杀进程
查进程:
ps -ef
杀进程:
kill -9 1234
注:1234 是进程ID