1e41f4b71Sopenharmony_ci# Compilation and Building 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## Mini and Small Systems 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci### "usr/sbin/ninja: invalid option -- w" 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci- **Symptom** 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci The build fails, and **usr/sbin/ninja: invalid option -- w** is displayed. 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci- **Possible Causes** 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci The Ninja version in use does not support the **--w** option. 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci- **Solution** 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci Uninstall Ninja and GN, and [install Ninja and GN of the required version](../get-code/gettools-ide.md). 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci### "/usr/bin/ld: cannot find -lncurses" 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci- **Symptom** 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci The build fails, and **/usr/bin/ld: cannot find -lncurses** is displayed. 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci- **Possible Causes** 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci The ncurses library is not installed. 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci- **Solution** 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci ``` 35e41f4b71Sopenharmony_ci sudo apt-get install lib32ncurses5-dev 36e41f4b71Sopenharmony_ci ``` 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci### "line 77: mcopy: command not found" 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci- **Symptom** 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci The build fails, and **line 77: mcopy: command not found** is displayed. 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci- **Possible Causes** 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci mcopy is not installed. 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci- **Solution** 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci ``` 52e41f4b71Sopenharmony_ci sudo apt-get install dosfstools mtools 53e41f4b71Sopenharmony_ci ``` 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci### "riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory" 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci- **Symptom** 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci The build fails, and the following information is displayed: <br>**riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory** 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_ci- **Possible Causes** 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci You do not have the required permission to access files in the RISC-V compiler directory. 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci- **Solution** 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci 1. Run the following command to locate **gcc_riscv32**: 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci ``` 71e41f4b71Sopenharmony_ci which riscv32-unknown-elf-gcc 72e41f4b71Sopenharmony_ci ``` 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci 2. Run the **chmod** command to change the directory permission to **755**. 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci### "No module named 'Crypto'" 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci- **Symptom** 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci The build fails, and **No module named 'Crypto'** is displayed. 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci- **Possible Causes** 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci Crypto is not installed in Python3. 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci- **Solution** 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci 1. Run the following command to query the Python version: 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci ``` 94e41f4b71Sopenharmony_ci python3 --version 95e41f4b71Sopenharmony_ci ``` 96e41f4b71Sopenharmony_ci 2. Ensure that Python 3.7 or later is installed, and then run the following command to install pycryptodome: 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci ``` 99e41f4b71Sopenharmony_ci sudo pip3 install pycryptodome 100e41f4b71Sopenharmony_ci ``` 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci### "xx.sh: xx unexpected operator" 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci- **Symptom** 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci The build fails, and **xx.sh [: xx unexpected operator** is displayed. 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci- **Possible Causes** 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci The build environment shell is not bash. 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci- **Solution** 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci ``` 116e41f4b71Sopenharmony_ci sudo rm -rf /bin/sh 117e41f4b71Sopenharmony_ci sudo ln -s /bin/bash /bin/sh 118e41f4b71Sopenharmony_ci ``` 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci### "Could not find a version that satisfies the requirement six>=1.9.0" 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci- **Symptom** 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci The following information is displayed during the build process: 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci ``` 129e41f4b71Sopenharmony_ci Could not find a version that satisfies the requirement six>=1.9.0 130e41f4b71Sopenharmony_ci ``` 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci- **Possible Causes** 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci **six** is not installed. 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci- **Solution** 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci Method 1: Run the **pip3 install six** command to install **six** online. 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci Method 2: Install **six** offline. 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci 1. Download the installation package from [PyPI](https://pypi.org/project/six/#files). 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci  146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci 2. Save the source code to the Linux server and run the **pip3 install six-1.14.0-py2.py3-none-any.whl** command to install **six**. 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci 3. Start the build again. 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci### "cannot find -lgcc" 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci- **Symptom** 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci The following information is displayed during the build process: 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci ``` 160e41f4b71Sopenharmony_ci riscv32-unknown-elf-ld: cannot find -lgcc 161e41f4b71Sopenharmony_ci ``` 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci- **Possible Causes** 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci The gcc_riscv32 path is incorrectly set as follows. There is an extra slash (/) after **bin**. 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci ``` 169e41f4b71Sopenharmony_ci ~/gcc_riscv32/bin/:/data/toolchain/ 170e41f4b71Sopenharmony_ci ``` 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci- **Solution** 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci Modify the gcc_riscv32 path as follows: 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci ``` 178e41f4b71Sopenharmony_ci ~/gcc_riscv32/bin:/data/toolchain/ 179e41f4b71Sopenharmony_ci ``` 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci### Failed to Find Python 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci- **Symptom** 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci The following information is displayed during the build process: 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci ``` 190e41f4b71Sopenharmony_ci -bash: /usr/bin/python: No such file or directory 191e41f4b71Sopenharmony_ci ``` 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci- **Possible Cause 1** 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci Python is not installed. 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci- **Solution** 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci Run the following command to install Python. The following uses Python 3.8 as an example. 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci ``` 203e41f4b71Sopenharmony_ci sudo apt-get install python3.8 204e41f4b71Sopenharmony_ci ``` 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci- **Possible Cause 2** 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci The soft link to Python does not exist in the **usr/bin** directory. 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci  211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci- **Solution** 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci Run the following commands to add the soft link to Python: 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci ``` 218e41f4b71Sopenharmony_ci # cd /usr/bin/ 219e41f4b71Sopenharmony_ci # which python3 220e41f4b71Sopenharmony_ci # ln -s /usr/local/bin/python3 python 221e41f4b71Sopenharmony_ci # python --version 222e41f4b71Sopenharmony_ci ``` 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci Example: 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci  227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci 229e41f4b71Sopenharmony_ci### Failed to Find Python3 230e41f4b71Sopenharmony_ci 231e41f4b71Sopenharmony_ci- **Symptom** 232e41f4b71Sopenharmony_ci 233e41f4b71Sopenharmony_ci  234e41f4b71Sopenharmony_ci 235e41f4b71Sopenharmony_ci- **Possible Causes** 236e41f4b71Sopenharmony_ci 237e41f4b71Sopenharmony_ci Python 3 is not installed. 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci- **Solution** 240e41f4b71Sopenharmony_ci 241e41f4b71Sopenharmony_ci Run the following command to install Python 3: 242e41f4b71Sopenharmony_ci 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci ``` 245e41f4b71Sopenharmony_ci sudo apt-get install python3.8 246e41f4b71Sopenharmony_ci ``` 247