Shared libraries arduino

Hello,

I am new to Arduino and with some friends we wanted to create a kernel that we can boot on an arduino.

Is it possible to boot a .so file if yes does it need a specific bootloader ?

If not do you have any alternatives ?

Thank you

(deleted)

It is possible to use .so files with Arduino IDE 1.8.6 and newer. The Arduino library must have a library.properties file which contains the line:

precompiled=true

More information is provided in the relevant section of the Arduino Library Specification: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#libraryproperties-file-format

precompiled - (available from Arduino IDE 1.8.6/arduino-builder 1.4.0) (optional) set to true to allow the use of .a (archive) and .so (shared object) files. The .a/.so file must be located at src/{build.mcu} where {build.mcu} is the architecture name of the target the file was compiled for. Ex: cortex-m3 for the Arduino DUE. The static library should be linked as an ldflag.

There is also documentation for the ldflags field of library.properties in the specification:

ldflags - (available from Arduino IDE 1.8.6/arduino-builder 1.4.0) (optional) the linker flags to be added. Ex: ldflags=-lm

I believe some platform.txt changes have been required in order to support the new ldflags feature and that change has not been made in all hardware packages yet. You can get some information on that here (and in the pages lined from that link): https://github.com/arduino/Arduino/issues/7005

Paqx: Hello,

I am new to Arduino and with some friends we wanted to create a kernel that we can boot on an arduino.

Is it possible to boot a .so file if yes does it need a specific bootloader ?

If not do you have any alternatives ?

Thank you

What is the meaning of "kernel" in the context of Arduino?