Hi Bart,

You cannot replace NuttX libc with another external libc because the kernel
is tightly coupled to it.

Some functions could work fine, but others will create issues. In the past
all kernel libc used the same name as these libc functions for
applications, not when a function is kernel specific it will include the
prefix nx_.

Probably some kernel functions are still dependent on those same libc names
used by applications, in this case replacing them with an external libc
will be an issue.

BR,

Alan

On Fri, Jul 25, 2025 at 9:54 AM Bartek22 <bartol2...@gmail.com> wrote:

> I tried to compile simple app from NuttX with standard library from
> toolchain and I'm getting this errors: arm-none-eabi/include/stdlib.h:39:3:
> error: conflicting declaration 'typedef struct div_t div_t' 39 | } div_t; |
> ^~~~~ Because it sees definitions from NuttX and toolchain library, I'm
> using latest ARM toolchain 14.3.
>
> pt., 25 lip 2025 o 14:36 Bartek22 <bartol2...@gmail.com> napisał(a):
>
> > I’m working on integrating NuttX into an existing C++ project, but I’m
> > facing several issues.
> >
> > Background
> > Initially, I tried using symbolic links to connect my application to
> NuttX
> > apps/external and build everything with CMake. However, since NuttX does
> > not fully support CMake, I changed my approach:
> >
> > My application’s CMake script now executes NuttX’s configure, make, and
> > make export steps.
> >
> > After that, my application links against the NuttX libraries that were
> > built.
> >
> > The Problem
> > I need to use libc and libstdc++ from my ARM toolchain because I require
> > C++23 features.
> > I have already modified the relevant menuconfig settings, but I’m
> > encountering these issues:
> >
> > Conflicting declarations – Some symbols are coming from the toolchain
> > libraries, while others are being pulled in from NuttX, resulting in
> > multiple definition errors.
> >
> > Unsupported relocations – If I disable NuttX’s libc and libstdc++, I get
> > errors like:
> > "... dangerous relocation: unsupported relocation ..."
> > I’m unsure how to cleanly integrate NuttX with a standalone C++
> > application while still using the toolchain’s standard libc and libstdc++
> > (instead of NuttX’s minimal libc).
> >
> > What I’ve Tried
> > I looked at this example:
> > https://nuttx.apache.org/docs/latest/guides/cpp_cmake.html
> >
> > However, when I modify it to use C++23 and enable C++23 features, I still
> > encounter the same problems.
> >
> > I also want to avoid the PX4 firmware approach, where they compile NuttX
> > from their CMake file into libraries and then link to them. While this
> > might solve the issue, I’m looking for a simpler approach.
> >
> > Question
> > What is the recommended way to:
> >
> > Build NuttX while using the ARM toolchain’s standard libc and libstdc++?
> > Integrate NuttX into a standalone CMake-based C++23 project without
> symbol
> > conflicts?
> >
>

Reply via email to