[文章]搭建纯Ubuntu开发环境(简洁版)

阅读量0
0
2


HUAWEI DevEco Device Tool 2.0 Beta1 昨天发布了,提供了Ubuntu支持。
如下重述了自己如何从安装Ubuntu开始,到完成第一次编译的步骤。
供参考,希望有帮助。

说明:
1. 目标是搭建一个编辑、编译到烧录(TODO)均在Ubuntu下的环境。
2. 特性:
- Ubuntu 20.04 LTS based
- HUAWEI DevEco Device Tool 2.0 Beta1
- 针对IoT Camera开发板(Hi3516DV300)
3. 系统环境配置后,在VS Code上的操作参见官方教程。

# 0. 安装操作系统:
操作系统可在虚拟机(VMWare)中安装或裸机安装。
本文全篇如下所述步骤在这两种情况下均相同。

首先,请参照如下信息,安装操作系统:
1. 使用的镜像为:`ubuntu-20.04.1-desktop-amd64.iso`。
2. 断开网络,避免还需等待下载更新。
2. `Install -> Welcome` 界面选择默认的 English。
3. `Install -> Updates and other software` 界面:
    a. 选择`Minimal installation`
        b. 勾选`Install third-party software ...` 选项
3. 后续分区等请按您实际需要即可。

安装完后,初次启动的时候,建议先做如下设置:
1. 登录sign-on 账号,以启用LivePatch。
2. 更改软件更新源为中国地区的:
    a. "Software & Updates" -> "Ubuntu Software" -> "Download from:",选择一个国内源。
3. 禁用更新:
    a. "Software & Updates" -> Updates -> "Automatically check...", 设置为“Never”。
        b. "Software & Updates" -> Updates -> "When there are security ...",设置为“Display im...”。

之后打开终端,执行如下:
```
# 以下命令若提示`20auto-upgrades`合并冲突,可选“keep the local version...”
sudo apt update; sudo apt upgrade -y

sudo bash -c "echo 'fs.inotify.max_user_watches=524288' >> /etc/sysctl.conf"
sudo apt install apt-show-versions net-tools openssh-server git curl -y
```

之后,请下载并拷贝离线包到主用户的目录。
离线包下载地址:
若不便用U盘,可使用bitvise登录Ubuntu后,通过其SFTP来直接拷贝文件到虚拟机。
拷贝后的目录结构应该如下:
```
~/Downloads/
        ├── build_tools
        │   ├── gn.1523.tar
        │   ├── hapsigntoolv2.jar
        │   ├── hc-gen-0.65-linux.tar
        │   ├── hmos_app_packing_tool.jar
        │   ├── llvm-linux-9.0.0-34042.tar
        │   └── ninja.1.9.0.tar
        ├── jdk-8u281-linux-x64.tar.gz
        ├── Miniconda3-latest-Linux-x86_64.sh
        ├── node-v14.15.4-linux-x64.tar.xz
        └── vscode
                ├── code_1.52.1-1608136922_amd64.deb
                ├── codelldb-x86_64-linux.vsix
                ├── cpptools-linux.vsix
                ├── devicetool-linux-tool-2.0.0.0.zip
                └── Versions.txt
```

请**重启**一次系统后继续如下操作。
这些操作在终端中进行。

# 1. 设置bash为默认终端
```
sudo dpkg-reconfigure dash # 弹出的窗口选择No

# 验证设置:如下命令输出应含有`/bin/sh -> bash`
ls -l /bin/sh
```

# 2. 安装JDK 8
```
sudo mkdir -p /usr/lib/jvm
sudo tar fx ~/Downloads/jdk-8u281-linux-x64.tar.gz -C /usr/lib/jvm/
```

## 2.1 创建全用户有效的环境变量
生成配置文件:
```
BM_JDK_PROFILE=/etc/profile.d/bm_java_jdk8.sh
sudo bash -c "echo '# `date`: added by $USER, to add JAVA 8' > $BM_JDK_PROFILE"
sudo bash -c "echo 'export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_281' >> $BM_JDK_PROFILE"
sudo bash -c "echo 'export JRE_HOME=${JAVA_HOME}/jre' >> $BM_JDK_PROFILE"
sudo bash -c "echo 'CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib:${CLASSPATH}' >> $BM_JDK_PROFILE"
sudo bash -c "echo 'export PATH=${JAVA_HOME}/bin:$PATH' >> $BM_JDK_PROFILE"
cat $BM_JDK_PROFILE
source $BM_JDK_PROFILE

# 验证设置:如下命令输出应含有`java version "1.8.0_281"`
java -version
```
该配置文件在每次系统启动时会被调用,对所有用户有效。

# 3. 安装NodeJS :
解压到安装位置:
```
VERSION=v14.15.4
DISTRO=linux-x64
sudo mkdir -p /usr/local/lib/nodejs
sudo tar -xJvf ~/Downloads/node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs
```

## 3.1 创建全用户有效的环境变量
生成配置文件:
```
BM_NODEJS_PROFILE=/etc/profile.d/bm_nodejs_stable_v14.sh
sudo bash -c "echo '# `date`: added by $USER, to add NodeJS' > $BM_NODEJS_PROFILE"
sudo bash -c "echo 'VERSION=$VERSION' >> $BM_NODEJS_PROFILE"
sudo bash -c "echo 'DISTRO=$DISTRO' >> $BM_NODEJS_PROFILE"
sudo bash -c "echo 'export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH' >> $BM_NODEJS_PROFILE"
cat $BM_NODEJS_PROFILE
source $BM_NODEJS_PROFILE

# 验证设置:如下命令输出应含有`v14.15.4`
node -v
```
该配置文件在每次系统启动时会被调用,对所有用户有效。

## 3.2 修正sudo下找不到npm命令的问题
```
## : 等效于`sudo ln -s /usr/local/lib/nodejs/node-v14.15.4-linux-x64/bin/n* /usr/bin/`
sudo ln -s /usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin/n* /usr/bin/
```
## 3.3 为当前用户设立单独的npm仓
```
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
# 备份当前的.bashrc
cp ~/.bashrc ~/.bashrc.before_config_oh_dev
echo "export PATH=$HOME/.npm-global/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
```
## 3.4 设立NPM更新源为国内淘宝地址,加快访问
```
npm config set registry https://registry.npm.taobao.org
```

# 4. 安装HPM等工具
后续代码编写和直接通过VSCode界面来烧录时,会用到如下插件,这里顺带安装好。

如下命令可合并为一条命令`npm install -g @ohos/hpm-cli tftp serialport @serialport/parser-readline u*** crc` 一次执行完。

```
npm install -g @ohos/hpm-cli
npm install -g tftp
npm install -g serialport
npm install -g @serialport/parser-readline
npm install -g u***
npm install -g crc
```

# 5. 配置代码编写环境

代码编写通过`Visual Studio Code`以及`DevEco Device Tool`进行。

```
# 安装 VS Code
sudo apt install ~/Downloads/vscode/code_1.52.1-1608136922_amd64.deb

# 如下两个扩展DevEco Device Tool会需要
code --install-extension ~/Downloads/vscode/cpptools-linux.vsix
code --install-extension ~/Downloads/vscode/codelldb-x86_64-linux.vsix
# 可使用如下命令来联网这两扩展
#code --install-extension ms-vscode.cpptools
#code --install-extension ms-vscode.codelldb

# 如下三条也会需要
sudo apt install python3-venv authbind -y
sudo touch /etc/authbind/byport/69
sudo chmod 777 /etc/authbind/byport/69

# 安装 DevEco Device Tool
unzip ~/Downloads/vscode/devicetool-linux-tool-2.0.0.0.zip -d ~/Downloads/vscode/
bash ~/Downloads/vscode/deveco-device-tool-2.0.0+198213.7f8b488f.run

# 然后补充如下配置
sudo cp ~/.local/share/deveco-device-tool/99-jtag.rules /etc/udev/rules.d/99-jtag.rules
sudo cp ~/.local/share/deveco-device-tool/99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
sudo udevadm control -R /usr/bin/authbind

# TODO:warning另提到执行如下命令,但其似乎没做什么,后续再看
/usr/bin/authbind
```

到这里已完成**代码编辑**所需要的环境配置。下节开始准备代码库和编译环境。


# 6. 配置Git

```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
sudo bash -c "curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo"
sudo chmod a+x /usr/local/bin/repo
```
# 7. 配置Python
```
sudo apt-get install python3-setuptools python3-pip python-is-python3 -y

sudo ln -s /usr/bin/pip3 /usr/bin/pip
pip install -i https://pypi.doubanio.com/simple/ pip -U

pip config set global.index-url https://pypi.doubanio.com/simple/
sudo pip config set global.index-url https://pypi.doubanio.com/simple/

#也可使用如下命令该为 华为 的源
#pip config set global.trusted-host repo.huaweicloud.com
#pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple

pip3 config set global.timeout 120

echo "export PATH=/home/bmx/.local/bin:$PATH" >> ~/.bashrc
sudo pip3 install kconfiglib requests
pip install kconfiglib requests
```


# 8. 需要的库
```
sudo apt-get install dosfstools mtools mtd-utils -y
```

# 9. 安装编译工具

```
mkdir ~/ws_ohm_build_tools

## GN:
tar xvf ~/Downloads/build_tools/gn.1523.tar -C ~/ws_ohm_build_tools
cp ~/.bashrc ~/.bashrc.before_config_ohm
echo "export PATH=$HOME/ws_ohm_build_tools/gn:$PATH" >> ~/.bashrc
source ~/.bashrc
gn -version

## NinJa
tar xvf ~/Downloads/build_tools/ninja.1.9.0.tar -C ~/ws_ohm_build_tools
echo "export PATH=$HOME/ws_ohm_build_tools/ninja:$PATH" >> ~/.bashrc
source ~/.bashrc

## LLVM
tar xvf ~/Downloads/build_tools/llvm-linux-9.0.0-34042.tar -C ~/ws_ohm_build_tools/
echo "export PATH=$HOME/ws_ohm_build_tools/llvm/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

## HC-GEN
tar xvf ~/Downloads/build_tools/hc-gen-0.65-linux.tar -C ~/ws_ohm_build_tools/
echo "export PATH=$HOME/ws_ohm_build_tools/hc-gen:$PATH" >> ~/.bashrc
source ~/.bashrc
hc-gen -version

## HAP Tools
mkdir ~/ws_ohm_build_tools/hap_tools
cp ~/Downloads/build_tools/hmos_app_packing_tool.jar ~/ws_ohm_build_tools/hap_tools
cp ~/Downloads/build_tools/hapsigntoolv2.jar ~/ws_ohm_build_tools/hap_tools
echo "export PATH=$HOME/ws_ohm_build_tools/hap_tools:$PATH" >> ~/.bashrc
source ~/.bashrc
ln -s $HOME/ws_ohm_build_tools/hap_tools ~/developtools
```

# 10. 工程的新建到烧录
这部分都在VS Code上操作,请参见官方指南:
https://device.harmonyos.com/cn/docs/ide/user-guides/create_project-0000001072200151

# 10. 下载代码库
```
mkdir ~/ws_oh
cd ~/ws_oh
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c

# 做个备份
cp -r ~/ws_oh ~/ws_oh.v0
```

# 11.编译代码库

## 11.1 设置工程

### 11.1.1 创建新工程
启动VS Code界面,参见如下链接创建新工程:
https://device.harmonyos.com/cn/docs/ide/user-guides/create_project-0000001072200151

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友