Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does a LibC os exist?

People also ask

How big is LIBC?

The sizes of packages for these libraries in an OpenEmbedded build are: libc: 1.4KiB (libm is inlcuded with libc)

Is glibc a Posix?

In February 1988, FSF described glibc as having nearly completed the functionality required by ANSI C. By 1992, it had the ANSI C-1989 and POSIX. 1-1990 functions implemented and work was under way on POSIX.


The reason that you're not finding a name for this is that it's not an operating system -- it's the absence of an operating system. Often this is called something like "bare-metal" programming.

The general idea of bare-metal programming is that there is a small bit of general-purpose code -- a "bootloader" -- that sets up the memory controller and other hardware things on the board, and then that transfers control to your program. (Operating systems also have bootloaders, so in that sense your program is replacing the operating system.) Uboot is a fairly common open-source bootloader, so that might be a good place to start looking for information.

One of the tricky bits about bare-metal programming is that, since there isn't an operating system in place to handle any of the hardware communication, you have to think about "what does a printf actually mean as far as what data goes to what peripheral?" and "how do I make it go there?" Again, some bootloaders provide support for this sort of thing, though it's not always trivial to connect it all up. Again, Uboot is a good example.

Meanwhile, the C library itself is actually going to be provided by your compiler, rather than the bootloader.

(I should also add, as a name note: The company I work for makes a series of bare-metal and Linux compilers, known as Sourcery CodeBench. For CodeBench, the bare-metal versions are generally named after the ABI specification they use for linking programs, so the "ELF" or "EABI" versions are all bare-metal compilers, and I think that's a pretty common way of referring to this sort of thing, so you'll see that sort of name around as well.)


Basically a kernel is not needed, but if you are searching for an minimal os http://wiki.osdev.org/Projects could be a point to start. there are a lot of hobby and semi professional projects out their that support basic things and have a small footprint. Also there are some good tutorials to write it yourself. You also need to consider that drivers etc are need for simple things like network or serial I/O .

Also The linux kernel is always a good start( some time ago there was a linux distro that was just about 20MB)


I think there is a problem with some of your assumptions. You are correct in saying that you don't need a kernel for an OS, but anything that can run applications can statically compile in libc.

See : http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-libc.html

For example, it is possible to use printf as long as you compile that function for your os. So, you can use MenuetOS as long as you build libc for it.

Now there exists a small version of libc at http://pdclib.rootdirectory.de/ which some embedded system can use.

In this way any small OS can be considered an OS for running libc.


There are plenty of those.

Most professional real-time operating systems (RTOS) come with a more or less complete implementation of the C library, and often even for C++ (for example Keil MDK, µItron). Though in practice you often tend to avoid it, because it uses too much of the available resources.

An RTOS typically has a very small kernel, without support for files or pipes. Instead they tend to support tasks, timers, queues and event flags, with very little overhead.


Libcc is not an operating system. Though the definition of OS is somewhat fuzzy, it does include more than an API. It requires memory management, process scheduling, ect.