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_]] [[_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 ```shell
sudo dpkg --add-architecture arm64 sudo dpkg --add-architecture arm64
...@@ -46,21 +54,12 @@ sudo apt-get install -y \ ...@@ -46,21 +54,12 @@ sudo apt-get install -y \
``` ```
The above enables apt to download packages for arm64. It also installs 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`). versions of gcc defined in the cmake cross-compilation file (`cross-arm.cmake`).
## Install and Build # Build for ARM64
### Install required packages
Use the host compiler to install its dependencies.
```shell ## Build code generation tools for host
cd cmake_targets
./build_oai -I
```
### Build the LDPC generators
Use the x86 compiler to build the `ldpc_generators` and generate the header 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 file in the `ran_build/build` folder. They are necessary during a build for
...@@ -77,7 +76,7 @@ cmake ../../.. ...@@ -77,7 +76,7 @@ cmake ../../..
make -j`nproc` ldpc_generators generate_T 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 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 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. ...@@ -90,7 +89,13 @@ be defined in order to tell cmake where the host tools have been built.
cd ../build-cross cd ../build-cross
cmake ../../.. -GNinja -DCMAKE_TOOLCHAIN_FILE=../../../cmake_targets/cross-arm.cmake -DNATIVE_DIR=../build 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 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 lte-softmodem nr-softmodem nr-cuup oairu lte-uesoftmodem nr-uesoftmodem
ninja -j`nproc` params_libconfig coding rfsimulator 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