# Compilation and Building FAQ
- [Invalid -- w option](#section1019152312222)
- [Ncurses library not found](#section21449422618)
- [Mcopy not found](#section12477184992615)
- [No riscv file or directory](#section178451337202716)
- [No Crypto](#section1241481172819)
- [Unexpected operator](#section3691222152919)
## Invalid -- w option
- **Problem**
The compilation fails, and **usr/sbin/ninja: invalid option -- w** is displayed.
- **Cause**
The Ninja version in the compilation environment is outdated and does not support the **--w** option.
- **Solution**
Uninstall Ninja and GN and follow the instructions provided in [Acquiring Tools](../get-code/tool-acquisition.md) to obtain the provided compilation toolchain.
## Ncurses library not found
- **Problem**
The compilation fails, and **/usr/bin/ld: cannot find -lncurses** is displayed.
- **Cause**
The ncurses library is not installed.
- **Solution**
```
sudo apt-get install lib32ncurses5-dev
```
## Mcopy not found
- **Problem**
The compilation fails, and **line 77: mcopy: command not found** is displayed.
- **Cause**
Mcopy is not installed.
- **Solution**
```
​sudo apt-get install dosfstools mtools
```
## No riscv file or directory
- **Problem**
The compilation fails, and the following information is displayed: **riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory**.
- **Cause**
Permission is required to access files in the **riscv** compiler path.
- **Solution**
1. Run the following command to query the directory where **gcc\_riscv32** is located:
```
which riscv32-unknown-elf-gcc
```
2. Run the **chmod** command to change the directory permission to **755**.
## No Crypto
- **Problem**
The compilation fails, and **No module named'Crypto loaded** is displayed.
- **Cause**
Crypto is not installed in Python 3.
- **Solution**
1. Run the following command to query the Python version:
```
python3 --version
```
2. Ensure that Python 3.7 or later is installed, and then run the following command to install pycryptodome:
```
sudo pip3 install pycryptodome
```
## Unexpected operator
- **Problem**
The compilation fails, and **xx.sh \[: xx unexpected operator** is displayed.
- **Cause**
The compilation environment is shell instead of bash.
- **Solution**
```
sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
```