Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Examples of cross-compiling / embedded usage #141

Open
bitandquit opened this issue May 9, 2024 · 2 comments
Open

Examples of cross-compiling / embedded usage #141

bitandquit opened this issue May 9, 2024 · 2 comments

Comments

@bitandquit
Copy link

Hi,

This is a great project!

I wanted to ask, can you provide some examples that show how to cross-compile for embedded use-cases? For example, would it just be setting the 'CC' environment variable? How would I specify something like a linker script, and the C-start-up code?

This is all commonly done for embedded environments (baremetals, without an OS, etc).

This is an example (not mine) of CMake for an ARM cortex-m0: https://github.com/infohoschie/arm-cortex-m0-cmake

@mrexodia
Copy link
Contributor

You would call cmake with -DCMAKE_TOOLCHAIN_FILE=... as usual.

@mrexodia
Copy link
Contributor

mrexodia commented Nov 3, 2024

Perhaps to give a more concrete example of cross-compiling to Windows for ARM64 in case somebody runs across this:

  • Clone the zig-cross project in your home directory:
    git clone https://github.com/mrexodia/zig-cross ~/zig-cross
  • Configure your CMake (or cmkr, same thing) project with the following command line:
    cmake -G Ninja -B build-winarm64 -DCMAKE_TOOLCHAIN_FILE=~/zig-cross/cmake/zig-toolchain-winarm64.cmake
  • Build the project:
    cmake --build build-winarm64

There are many other cross-compilation toolchains out there, they all work in the same way. The most important thing is that you do not hardcode toolchain/platform-specific flags in your project and everything will work smoothly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants