On 8/2/2024 12:06 PM, Ritvik Tanksalkar wrote:
Hello,
I'm working on a project where I need to compile the NuttX kernel to use
the system's standard library (stdlib) instead of its custom
implementation. My goal is to have NuttX use the host system's stdlib
functions rather than the ones provided with the kernel.
Currently, I'm compiling the Nuttx kernel for "sim:posix_spawn" which
guarantees native linux support.
I'd appreciate any guidance on how to achieve this. Specifically:
1. What configuration changes are needed to disable NuttX's built-in libc?
2. Are there any known issues or challenges in making this change?
Any insights in this regard would be greatly appreciated.
Regards,
Ritvik
Almost nothing is impossible given enough effort. But if you are
thinking in terms of a simple effort, the simple answer is that
replacing the NuttX-specific libc with a Linux-specific libc is
impossible. That is because the NuttX libc uses the NuttX OS system
calls and the Linux libc uses the Linux system calls. They are not the
same. In order to make this work, you would have to change the OS
interface used in GLIBC to use the NuttX OS interface. That would be an
enormous job!
GLIBC uses the Linux-specific header files that you will find under
/usr/include/sys. Those would all have to be replaced with
NuttX-specific header files. The exported NuttX header files are the
ones you find in nuttx/include/nuttx. Most of the header file required
by GLIBC don't even exist in NuttX and would have to be created to
satisfy GLIBC. That is another enormous job.
Alan's suggestion works fine for a few, specific, leaf functions in
GLIBC but will not work in general. That is because many non-leaf GLIBC
header files will draw in other header files that are not compatible
with NuttX. It would be yet another enormous job to make that work.
My recommendatioin: Don't waste your time.