Files
favicon-trap/docs/COMPILE.md
Nguyen Anh Quynh aaaea14214 import Unicorn2
2021-10-03 22:14:44 +08:00

132 lines
2.9 KiB
Markdown

This HOWTO introduces how to build Unicorn2 natively on Linux/Mac/Windows,
or cross-build to Windows from Linux host.
---
### Native build on Linux/MacOS
This builds Unicorn2 on Linux/MacOS. The output is `libunicorn.so` or `libunicorn.dylib`, respectively.
- Require `cmake` & `pkg-config` packages (besides `gcc`/`clang` compiler):
```
$ sudo apt install cmake pkg-config
```
- Build with the following commands.
```
$ mkdir build; cd build
$ ../cmake.sh
```
Then run the sample `sample_riscv` with:
```
$ ./sample_riscv
```
---
### Native build on Windows, with MSVC
This builds Unicorn2 on Windows, using Microsoft MSVC compiler. The output is `unicorn.dll`.
- Require `cmake` & `Microsoft Visual Studio`.
- From Visual Studio Command Prompt, build with the following commands.
```
mkdir build; cd build
../nmake.sh
```
Then run the sample `sample_riscv` with:
```
sample_riscv.exe
```
---
### Cross build from Linux host to Windows, with Mingw
This cross-builds Unicorn2 from **Linux host** to Windows, using `Mingw` compiler. The output is `libunicorn.dll`
- Install required package.
```
$ sudo apt install mingw-w64-x86-64-dev
```
- Build Unicorn and samples with the following commands.
```
$ mkdir build; cd build
$ ../cmake.sh mingw
```
The resulted `sample_riscv.exe` can be run with `libunicorn.dll`, and some dependecies DLLs
already provided in `bin/` directory.
To prepare for `sample_riscv.exe`, do:
```
cp libunicorn.dll ../bin
cp sample_riscv.exe ../bin
```
Then inside the `bin/` directory, you can run `sample_riscv.exe` (from `CMD.exe` prompt, for example)
---
### Native build on Windows host, with MSYS2/Mingw
This builds Unicorn2 on **Windows host**, using **MSYS2/Mingw** compiler. The output is `libunicorn.dll`
This requires MSYS2 to be installed on Windows machine. You need to download & install MSYS2 from https://www.msys2.org.
Then from MSYS2 console, install required packages:
```
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
```
- Build Unicorn and samples with the following commands.
```
mkdir build; cd build
../cmake.sh msys
```
The resulted `sample_riscv.exe` can be run with `libunicorn.dll`, and some dependecies DLLs
already provided in `bin/` directory.
To prepare for `sample_riscv.exe`, do:
```
cp libunicorn.dll ../bin
cp sample_riscv.exe ../bin
```
Then inside the `bin/` directory, you can run `sample_riscv.exe` (from `CMD.exe` prompt, for example)
---
### Cross build from Linux host to other arch
This cross-builds Unicorn2 from **Linux host** to other arch, using cross compiler. The output is `libunicorn.so`
- Install cross compiler package. For example, cross compile to ARM require below command.
```
$ sudo apt install gcc-arm-linux-gnueabihf
```
- Build Unicorn and samples with the following commands (note that you need to specify compiler with CC).
```
$ mkdir build; cd build
$ CC=arm-linux-gnueabihf-gcc ../cmake.sh
```