OpenHarmony 源码的编译构建
需要工具
ubuntu 20.0.4
vm
windows
第一步,安装虚拟机,安装虚拟机注意的一个地方就是,硬盘建议 100G 以上
安装好之后,打开虚拟机,打开命令行工具,
安装网络工具
sudo apt-get install net-tools
复制代码
显示网络配置
ifconfig
安装 vim
将 Ubuntu Shell 环境修改为 bash
执行如下命令,确认输出结果为 bash。
结果发现不是,所以做个修改
sudo dpkg-reconfigure dash
复制代码
将 Ubuntu shell 由 dash 修改为 bash。选择 no
此时修改成功
安装远程工具
具有 SSH、远程登录、RDP、VNC 和 X11 的 MobaX 术语 X 服务器 - 家庭版 (mobatek.net)
连接 192.168.144.128
设置桥接模式
安装 ssh
使用如下 apt-get 命令安装编译所需的必要的库和工具
sudo apt-get install gcc
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler
复制代码
关于 git
生成 key
ssh-keygen -t rsa -C "852851198@qq.com"
复制代码
然后三次回车即可生成 ssh key,
查看你的 public key,
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
复制代码
添加后,在终端(Terminal)中输入
若返回
Welcome to Gitee.com, yourname!
复制代码
则证明添加成功。
安装 git
sudo apt-get install git
sudo apt-get install git-lfs
复制代码
配置
git config --global user.name "徐建国"
git config --global user.email "852851198@qq.com"
git config --global credential.helper store
git config --global --list
复制代码
安装 curl
sudo apt-get install curl
复制代码
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ./repo
复制代码
sudo cp repo /usr/local/bin/repo
复制代码
注意,如果没有权限,可下载至其他目录,并将其配置到环境变量中
sudo chmod a+x /usr/local/bin/repo
复制代码
安装
sudo apt install python3-pip
复制代码
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
复制代码
安装码云 repo 工具,可以执行如下命令。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
复制代码
注意,如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
复制代码
查看目录
ls -a
下载代码
mkdir openharmony
cd openharmony
mkdir code
cd code
mkdir master
cd master
mkdir master0912
cd master0912
源码获取
方式一:通过 repo + ssh 下载(需注册公钥,请参考码云帮助中心)。
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
复制代码
方式二(个人推荐这个):通过 repo + https 下载。
sudo ln -s /usr/bin/python3 /usr/bin/python
复制代码
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
复制代码
通过 repo 获取
建立软连接
sudo ln -s /usr/bin/python3 /usr/bin/python
复制代码
方式一(推荐):通过 repo + ssh 下载(需注册公钥,请参考码云帮助中心)。
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0.1-LTS --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
复制代码
方式二:通过 repo + https 下载。
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0.1-LTS --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
复制代码
以下是主干代码的下载方式,但是主干代码可能会不稳定,不推荐大家使用,推荐大家使用 TLS 版本
安装 hb 在源码根目录下载运行如下命令安装 hb
python3 -m pip install build/lite
复制代码
设置环境变量
将以下命令拷贝到.bashrc 文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
复制代码
执行如下命令更新环境变量。
执行"hb -h",界面打印以下信息即表示安装成功:
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
复制代码
Hi3861 开发环境
最好参考官方文档:Hi3861开发环境这里做下记录
(1)安装编译依赖基础软件(仅 Ubuntu 20+需要)执行以下命令进行安装:
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
复制代码
(2)安装 Scons 运行如下命令,安装 SCons 安装包。
python3 -m pip install scons
复制代码
运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。
图 1 SCons 安装成功界面,版本要求 3.0.4 以上
(3)安装 python 模块运行如下命令,安装 python 模块 setuptools。
(4)安装 GUI menuconfig 工具(Kconfiglib),建议安装 Kconfiglib 13.2.0+版本,任选如下一种方式。
命令行方式:
sudo pip3 install kconfiglib
复制代码
(5)安装 pycryptodome,任选如下一种方式。
安装升级文件签名依赖的 Python 组件包,包括:pycryptodome、six、ecdsa。安装 ecdsa 依赖 six,请先安装 six,再安装 ecdsa。
命令行方式:
sudo pip3 install pycryptodome
复制代码
(6)安装 six,任选如下一种方式。
命令行方式:
sudo pip3 install six --upgrade --ignore-installed six
复制代码
(7)安装 ecdsa,任选如下一种方式。
命令行方式:
(8)安装 gcc_riscv32(WLAN 模组类编译工具链)下载以下交叉编译工具链:交叉编译工具链下载
安装 samba
sudo apt-get update
sudo apt-get install samba
sudo apt-get install samba-common
复制代码
修改 samba 配置文件
sudo vim /etc/samba/smb.conf
复制代码
在最后加入如下内容:
[work]
comment = samba home directory
path = /home
public = yes
browseable = yes
public = yes
writeable = yes
read only = no
valid users = hihope #用户名和你的主机一致
create mask = 0777
directory mask = 0777
#force user = nobody
#force group = nogroup
available = yes
复制代码
用 tab 键
保存退出后,输入如下命令,设置 samba,建议 123456 即可
重启 samba 服务
sudo service smbd restart
复制代码
输入用户名密码登录
进入到 openharmony,创建 tools 文件夹
压缩包复制进来
请先执行以下命令将压缩包解压到根目录:
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
vim ~/.bashrc
复制代码
将以下命令拷贝到.bashrc 文件的最后一行,保存并退出。
export PATH=~/gcc_riscv32/bin:$PATH
复制代码
生效环境变量。
Shell 命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
riscv32-unknown-elf-gcc -v
复制代码
源码目录 下载完代码后,大家可以进入代码目录
这里我们选择 wifiiot_hispark_pegasus
之后输入:
开始编译
编译后的固件
ls out/hispark_pegasus/wifiiot_hispark_pegasus/
复制代码
烧录 3516
第一步:安装远程连接插件 Remote-SSH
点击弹出的 config 文件,如下图
kaifa
Remote-SSH
编译构建系统解读,BUILD.gn 分析
如何新建自己的应用并导入到编译中
/home/hihope/openharmony/code/master/master0912/applications/sample/wifi-iot/app/BUILD.gn
头文件找不到
#include <stdio.h>
#include "iot_gpio.h"
int my_app(void)
{
IoTGpioInit(LED_TEST_GPIO);
IoTGpioSetDir(LED_TEST_GPIO, IOT_GPIO_DIR_OUT);
printf("helloword\r\n");
}
SYS_RUN(my_app);
复制代码
之前
static_library("my_app") {
#源代码
sources = [
"hello_word.c"
]
#头文件路径
include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal/cmsis",
]
}
复制代码
之后
static_library("my_app") {
#源代码
sources = [
"hello_word.c"
]
#头文件路径
include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal/cmsis",
"//base/iot_hardware/peripheral/interfaces/kits",
]
}
复制代码
find . -name iot_gpio.h
hihope@ubuntu:~/openharmony/code/master/master0912$ find . -name iot_gpio.h
./base/iot_hardware/peripheral/interfaces/kits/iot_gpio.h
hihope@ubuntu:~/openharmony/code/master/master0912$
复制代码
#include <stdio.h>
#include "iot_gpio.h"
#define LED_INTERVAL_TIME_US 300000
#define LED_TASK_STACK_SIZE 512
#define LED_TASK_PRIO 25
#define LED_TEST_GPIO 9 // for hispark_pegasus
enum LedState {
LED_ON = 0,
LED_OFF,
LED_SPARK,
};
int my_app(void)
{
IoTGpioInit(LED_TEST_GPIO);
IoTGpioSetDir(LED_TEST_GPIO, IOT_GPIO_DIR_OUT);
printf("helloword\r\n");
}
SYS_RUN(my_app);
复制代码
tab 键
static_library("my_app") {
#源代码
sources = [
"hello_word.c"
]
#头文件路径
include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal/cmsis",
"//base/iot_hardware/peripheral/interfaces/kits",
]
}
复制代码
如何引用第三方组件
/home/hihope/openharmony/code/master/master0912/third_party/JSON-C/BUILD.gn
static_library("my_app") {
#源代码
sources = [
"hello_word.c"
]
#头文件路径
include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal/cmsis",
"//base/iot_hardware/peripheral/interfaces/kits",
]
deps=[
"//third_party/JSON-C:json-c_static"
]
}
复制代码
如何自己添加第三方组件
仿照 jsonc
static_library("my_app") {
#源代码
sources = [
"hello_word.c"
]
#头文件路径
include_dirs = [
"//utils/native/lite/include",
"//kernel/liteos_m/kal/cmsis",
"//base/iot_hardware/peripheral/interfaces/kits",
]
deps=[
"//third_party/JSON-C:json-c_static",
"//third_party/my_party:my_first_party_static"
]
}
复制代码
static_library("my_first_party_static") {
sources = ["01.c"]
output_name = "json-c"
public_configs = [ ":json_c_config" ]
defines = [
"HAVE_CONFIG_H",
"_GNU_SOURCE",
"_REENTRANT",
]
cflags_c = [
"-Wall",
"-Os",
"-g",
"-Wcast-qual",
"-Wextra",
"-Wno-unused-parameter",
"-Wno-error=deprecated-declarations",
"-ffunction-sections",
"-fdata-sections",
]
ldflags = [
"-Wl",
"--gc-sections",
]
}
复制代码
void test_01(void)
{
printf("____________>>>>>>>>test_01");
}
复制代码
如何连接开发板为 PA 模式
、Hi3861 上面有一个 user 按键,用户可以按下这个按钮,Hi3861 会进入 AP 模式
HI3861 启动流程._鸿蒙系统设备开发_设备开发视频-51CTO学堂
评论