Prepare the Compilation Environment. Using a local Ubuntu system, the officially supported compilation environment is `Ubuntu Jammy 22.04.x amd64` only!
If you are using other Linux distributions, we strongly recommend that you use the Docker environment to compile to reduce the probability of compilation errors.
*Note: The first compilation will automatically download the required toolchain, which is approximately 840MB in size. Once downloaded, it will be automatically extracted to the `host-tools` directory in the SDK directory. For subsequent compilations, if the `host-tools` directory is detected, the download will not be performed again*.
Docker support is required on hosts running Linux systems. For how to use Docker, please refer to the [official documentation](https://docs.docker.com/) or other tutorials.
-`duodocker`The name of the running Docker must be consistent with the name set in the previous step.
-`"*"`In quotes is the shell command to be run in the Docker image.
-`cd /home/work`Switch to the /home/work directory. Since this directory has been bound to the host's code directory during runtime, the /home/work directory in Docker is the source code directory of the SDK.
-`cat /etc/issue` Displays the version number of the image used by Docker. It is currently Ubuntu 22.04.3 LTS and is used for debugging.
Step-by-step compilation requires logging into Docker to operate. Use the command `docker ps -a` to view and record the ID number of the container, such as 8edea33c2239.
After compilation is completed, you can use the `exit` command to exit the Docker environment:
コンパイルが完了したら`exit`コマンドでDockerから抜けれます:
```
root@8edea33c2239:/home/work# exit
```
The generated firmware can also be seen in the host code directory.
生成されたイメージはホストのコードディレクトリからも見れます。
### Stop Docker
### Dockerを停止する
After compilation is completed, if the above Docker running environment is no longer needed, you can stop it first and then delete it:
コンパイルが完了して、もし上のDocker環境がもう必要ないなら止めて削除できます:
```
docker stop 8edea33c2239
docker rm 8edea33c2239
```
## Other compilation considerations
## その他の環境でのコンパイルに関する注意
If you want to try to compile this SDK in an environment other than the above two environments, the following are things you may need to pay attention to, for reference only.
もしこのSDKを上の2つの環境以外で行いたいなら、参考までに以下のことに注意してください。
### cmake version
### Cmakeのバージョン
Note:`cmake` minimum version requirement is `3.16.5`.
注意:`cmake`は最低でもバージョン`3.16.5`以降が必要です。
Check the version of `cmake` in the system:
システムの`cmake`バージョンの確認
```bash
cmake --version
```
For example, the version of `cmake` installed using apt in the `Ubuntu 20.04` is:
例として、`Ubuntu 20.04`のaptでインストールされる`cmake`のバージョンは
```
```text
cmake version 3.16.3
```
The minimum requirement of this SDK is not met. Manual installation of the latest version `3.27.6` is needed:
If you wish to perform the compilation with WSL, there's an small issue building the image.
The $PATH, due Windows interoperability, has Windows environment variables which include some spaces between the paths.
WSLでコンパイルするには少し問題があります。
互換性のために$PATHにいくつかのスペース文字を含むWindows用の環境変数が入っています。
To solve this problem you need to change the `/etc/wsl.conf` file and add the following lines:
解決するには`/etc/wsl.conf`ファイルに以下を追記します。
```
[interop]
appendWindowsPath = false
```
After that, you need to reboot the WSL with `wsl.exe --reboot`. Then you able to run the `./build_milkv.sh` script or the `build_all` line in the step-by-step compilation method.
To rollback this change in `/etc/wsl.conf` file set `appendWindowsPath` as true. To reboot the WSL, can you use the Windows PowerShell command `wsl.exe --shutdown` then `wsl.exe`, after that the Windows environment variables become avaliable again in $PATH.