Commit 9f929970 authored by Robert Schmidt's avatar Robert Schmidt

Improve cross-compile documentation

- Give introductory line
- Reformulate headers to clarify steps
- Reference dockerfiles for further information
parent 2696f475
OpenAirInterface Cross-Compiler User Guide: explains how to build OAI for ARM64
(using the instruction set aarch64).
[[_TOC_]]
# Environment
# OpenAirInterface Cross-Compiler User Guide
Tested on Ubuntu 22. Newer version of Ubuntu should work as well, please file a
bug report if not (Gitlab Issues page).
## Environment
You should be able to compile OAI on the host (i.e., for x86). To do so,
install the dependencies, if not done already:
- OS: ubuntu 22.04
```shell
cmake_targets/build_oai -I
```
### Set up the environment
# Install ARM64 dependencies
Set up for install the package for aarch64.
Set up for install the package for ARM64.
```shell
sudo dpkg --add-architecture arm64
......@@ -46,21 +54,12 @@ sudo apt-get install -y \
```
The above enables apt to download packages for arm64. It also installs
gcc cross-compilers for aarch64 in version 11. This version needs to match the
gcc cross-compilers for ARM64 in version 11. This version needs to match the
versions of gcc defined in the cmake cross-compilation file (`cross-arm.cmake`).
## Install and Build
### Install required packages
Use the host compiler to install its dependencies.
# Build for ARM64
```shell
cd cmake_targets
./build_oai -I
```
### Build the LDPC generators
## Build code generation tools for host
Use the x86 compiler to build the `ldpc_generators` and generate the header
file in the `ran_build/build` folder. They are necessary during a build for
......@@ -77,7 +76,7 @@ cmake ../../..
make -j`nproc` ldpc_generators generate_T
```
### Build the Other Executables for aarch64
## Build executables for ARM64
Switch to the `ran_build/build-cross` folder to build the target executables
for ARM. The `cross-arm.cmake` file defines some ARM-specific build tools
......@@ -90,7 +89,13 @@ be defined in order to tell cmake where the host tools have been built.
cd ../build-cross
cmake ../../.. -GNinja -DCMAKE_TOOLCHAIN_FILE=../../../cmake_targets/cross-arm.cmake -DNATIVE_DIR=../build
ninja -j`nproc` dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim
ninja -j`nproc` lte-softmodem nr-softmodem nr-cuup oairu lte-uesoftmodem nr-uesoftmodem
ninja -j`nproc` params_libconfig coding rfsimulator
ninja dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim
ninja lte-softmodem nr-softmodem nr-cuup oairu lte-uesoftmodem nr-uesoftmodem
ninja params_libconfig coding rfsimulator
```
# Further information
You can do the above steps using docker, see dockerfiles
`docker/Dockerfile.base.ubuntu22.cross-arm64` and
`docker/Dockerfile.build.ubuntu22.cross-arm64` for more information.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment