Merge remote-tracking branch 'origin/fix-doc-cross-compile' into integration_2024_w45 (!3089)
- Give introductory line - Reformulate headers to clarify steps - Reference dockerfiles for further information
This commit is contained in:
+26
-22
@@ -1,15 +1,23 @@
|
|||||||
|
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
|
||||||
@@ -32,7 +40,6 @@ sudo apt install -y gcc-11-aarch64-linux-gnu \
|
|||||||
g++-11-aarch64-linux-gnu
|
g++-11-aarch64-linux-gnu
|
||||||
|
|
||||||
sudo apt-get install -y \
|
sudo apt-get install -y \
|
||||||
libatlas-base-dev:arm64 \
|
|
||||||
libblas-dev:arm64 \
|
libblas-dev:arm64 \
|
||||||
libc6-dev-i386 \
|
libc6-dev-i386 \
|
||||||
liblapack-dev:arm64 \
|
liblapack-dev:arm64 \
|
||||||
@@ -47,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
|
## Build code generation tools for host
|
||||||
|
|
||||||
Use the host compiler to install its dependencies.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
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
|
||||||
@@ -78,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
|
||||||
@@ -91,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.
|
||||||
|
|||||||
Reference in New Issue
Block a user