1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- uClibc and Glibc are not the same -- there are a number of differences which
- may or may not cause you problems. This document attempts to list these
- differences and, when completed, will contain a full list of all relevant
- differences.
- 1) uClibc is smaller than glibc. We attempt to maintain a glibc compatible
- interface, allowing applications that compile with glibc to easily compile with
- uClibc. However, we do not include _everything_ that glibc includes, and
- therefore some applications may not compile. If this happens to you, please
- report the failure to the uclibc mailing list, with detailed error messages.
- 2) uClibc is much more configurable then glibc. This means that a developer
- may have compiled uClibc in such a way that significant amounts of
- functionality have been omitted.
- 3) uClibc does not even attempt to ensure binary compatibility across releases.
- When a new version of uClibc is released, you may or may not need to recompile
- all your binaries.
- 4) malloc(0) in glibc returns a valid pointer to something(!?!?) while in
- uClibc calling malloc(0) returns a NULL. The behavior of malloc(0) is listed
- as implementation-defined by SuSv3, so both libraries are equally correct.
- This difference also applies to realloc(NULL, 0). I personally feel glibc's
- behavior is not particularly safe.
- 5) uClibc does not provide a database library (libdb).
- 6) uClibc does not support NSS (/lib/libnss_*), which allows glibc to easily
- support various methods of authentication and DNS resolution. uClibc only
- supports flat password files and shadow password files for storing
- authentication information.
- 7) uClibc's libresolv is only a stub. Some, but not all of the functionality
- provided by glibc's libresolv is provided internal to uClibc. Other functions
- are not at all implemented.
- 8) uClibc does not provide libnsl.so.1, and has no support for Network
- Information Service (NIS).
- 9) uClibc's locale support is not 100% complete yet. We are working on it.
- 10) uClibc's math library only supports long double as inlines, and even
- then the long double support is quite limited.
- 11) uClibc's libcrypt does not support the reentrant crypt_r, setkey_r and
- encrypt_r, since these are not required by SuSv3.
- 12) uClibc does not implement wordexp()
- 13) uClibc directly uses the kernel types to define most opaque data types.
- 14) uClibc directly uses the linux kernel's arch specific 'stuct stat'.
- 15) Add other things here as they come up......
|