457f2ccf80
This makes no difference when files are linked directly into a target application, but on macOS additional steps are needed to index common symbols in static libraries. See https://stackoverflow.com/a/26581710 By not creating any common symbols, this problem is bypassed. This will also trigger linker errors if there are cases where the same symbol is defined in the host application. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au> |
||
---|---|---|
.. | ||
main.c | ||
Makefile | ||
Makefile.upylib | ||
micropython_embed.mk | ||
mpconfigport.h | ||
README.md |
Example of embedding MicroPython in a standalone C application
This directory contains a simple example of how to embed MicroPython in an existing C application.
A C application is represented here by the file main.c
. It executes two
simple Python scripts which print things to the standard output.
Building the example
First build the embed port using:
$ make -f micropython_embed.mk
This will generate the micropython_embed
directory which is a self-contained
copy of MicroPython suitable for embedding. The .c files in this directory need
to be compiled into your project, in whatever way your project can do that. The
example here uses make and a provided Makefile
.
To build the example project, based on main.c
, use:
$ make
That will create an executable called embed
which you can run:
$ ./embed
Out of tree build
This example is set up to work out of the box, being part of the MicroPython
tree. Your application will be outside of this tree, but the only thing you
need to do for that is to change MICROPYTHON_TOP
(found in micropython_embed.mk
)
to point to the location of the MicroPython repository. The MicroPython
repository may, for example, be a git submodule in your project.