RPI4 Cross Compile for libcamera-app on Mac Pro (with docker) (1): Preface
Why am I doing this
After reading the camera app instructions, I thought of starting the development by modifying the libcamera-apps. Therefore, the first step is to build the original repo; after that, I can add my stuff to the official standard version.
It looks easy. The code-building instructions are well-documented on the official website, but there is a catch in my mind. I bought an expensive, neat, and tidy Macbook Pro after quitting my job as a mind-comforting geek gadget to compensate for losing my working life, so I don't want to build the code on a small RPI board. Instead, I want to build the code and develop things on my new laptop, which is why I got into this over tons of unexpected things just popping up in my sight…
Goals
- Create a docker container where I can cross-compile the libcamera-apps.
- Setup chroot
- Setup toolchain
- Build libcamera-apps
- The docker container should include the development environment I like.
- Setup vim
- Develop and debug for the self-built libcamera-apps
- My GitHub repository
Goals Explanation
First, I didn’t want to mess up my computer’s environment, so I chose to build a docker container with all the cross-compiling environment and tools.
Then, according to the materials [Earthly, A. Bhattacharyea] [Medium, S.Preston] I surveyed, the minimum things I should put into the docker container are two:
- The
sysroot
(chroot) compatible with the system files of the RPI4. - The proper
toolchain
contains many binary tools that can help build the binaries and link the proper libraries from thesysroot
to the binaries.
Since RPI OS is based on the Debian Linux distribution, Debian has good support for crossbuilding packages using multiarch[reference]. Therefore, if the environment is well set, the scenario will be that both sysroot
, in the docker container, and RPI OS, in the separated target board, can update the system by using apt
so that the cross-built binary from the sysroot
can run the RPI OS without extra settings.
Next, about the toolchain, the resource [docker-arm-cross-toolchain] on the internet is provided for the X86 system, so I used the crosstool-ng
to build my toolchain for my Macbook Pro with Apple M2 SoC.
In the end, for the simple building test, I tested by using CMake
and meson
, and the reason I tested on meson is the libcamea-apps
deprecates the CMake build and switch to meson, so I have to know how to cross-compile with meson.
Comments
Post a Comment