|
|
|
@ -31,12 +31,14 @@ please let me know. |
|
|
|
|
|
|
|
[Q6] ``Do I need some more things to compile GNU C Library?'' |
|
|
|
|
|
|
|
[Q7] ``When I run `nm libc.so|grep " U "' on the produced library |
|
|
|
I still find unresolved symbols? Can this be ok?'' |
|
|
|
[Q7] ``When I run `nm -u libc.so' on the produced library I still |
|
|
|
find unresolved symbols? Can this be ok?'' |
|
|
|
|
|
|
|
[Q8] ``I expect GNU libc to be 100% source code compatible with |
|
|
|
the old Linux based GNU libc. Why isn't it like this?'' |
|
|
|
|
|
|
|
[Q9] ``Why does getlogin() always return NULL on my Linux box?'' |
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|
|
|
[Q1] ``What systems does the GNU C Library run on?'' |
|
|
|
@ -50,7 +52,8 @@ in the future are: |
|
|
|
|
|
|
|
*-*-gnu GNU Hurd |
|
|
|
i[3456]86-*-linux Linux-2.0 on Intel |
|
|
|
alpha-*-linux Linux on Alpha |
|
|
|
m68k-*-linux Linux-2.0 on Motorola 680x0 |
|
|
|
alpha-*-linux Linux-2.0 on DEC Alpha |
|
|
|
|
|
|
|
Other Linux platforms are also on the way to be supported but I need |
|
|
|
some success reports first. |
|
|
|
@ -75,14 +78,14 @@ archiver. |
|
|
|
|
|
|
|
The GNU CC is found like all other GNU packages on |
|
|
|
ftp://prep.ai.mit.edu/pub/gnu |
|
|
|
or better one of the many mirrors. |
|
|
|
or better one of the many mirror sites. |
|
|
|
|
|
|
|
You always should try to use the latest official release. Older |
|
|
|
versions might not have all the features GNU libc could use. |
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|
|
|
[Q3] ``When starting make I get only errors messages. |
|
|
|
[Q3] ``When starting `make' I get only errors messages. |
|
|
|
What's wrong?'' |
|
|
|
|
|
|
|
[A3] {UD} You definitely need GNU make to translate GNU libc. No |
|
|
|
@ -112,7 +115,8 @@ you should use the GNU binutils if they provide at least the same |
|
|
|
functionality as your system's tools. |
|
|
|
|
|
|
|
Always get the newest release of GNU binutils available. |
|
|
|
Older releases are known to have bugs that affect building the GNU C library. |
|
|
|
Older releases are known to have bugs that affect building the GNU C |
|
|
|
Library. |
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|
|
|
@ -120,6 +124,11 @@ Older releases are known to have bugs that affect building the GNU C library. |
|
|
|
|
|
|
|
[A6] {UD} Yes, there are some more :-). |
|
|
|
|
|
|
|
* GNU gettext; the GNU libc is internationalized and partly localized. |
|
|
|
For bringing the messages for the different languages in the needed |
|
|
|
form the tools from the GNU gettext package are necessary. See |
|
|
|
ftp://prep.ai.mit.edu/pub/gnu or better any mirror site. |
|
|
|
|
|
|
|
* lots of diskspace (for i386-linux this means, e.g., ~70MB). |
|
|
|
|
|
|
|
You should avoid compiling on a NFS mounted device. This is very |
|
|
|
@ -128,7 +137,7 @@ Older releases are known to have bugs that affect building the GNU C library. |
|
|
|
* plenty of time (approx 1h for i386-linux on i586@133 or 2.5h or |
|
|
|
i486@66). |
|
|
|
|
|
|
|
If you are interested in some more measurements let me know. |
|
|
|
If you have some more measurements let me know. |
|
|
|
|
|
|
|
* Some files depend on special tools. E.g., files ending in .gperf |
|
|
|
need a `gperf' program. The GNU version (part of libg++) is known |
|
|
|
@ -139,10 +148,13 @@ Older releases are known to have bugs that affect building the GNU C library. |
|
|
|
+ the header files of the Linux kernel must be available in the |
|
|
|
search path of the CPP as <linux/*.h> and <asm/*.h>. |
|
|
|
|
|
|
|
* Some files depend on special tools. E.g., files ending in .gperf |
|
|
|
need a `gperf' program. The GNU version (part of libg++) is known |
|
|
|
to work while some vendor versions do not. |
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|
|
|
[Q7] ``When I run `nm libc.so|grep " U "' on the produced library |
|
|
|
I still find unresolved symbols? Can this be ok?'' |
|
|
|
[Q7] ``When I run `nm -u libc.so' on the produced library I still |
|
|
|
find unresolved symbols? Can this be ok?'' |
|
|
|
|
|
|
|
[A7] {UD} Yes, this is ok. There can be several kinds of unresolved |
|
|
|
symbols: |
|
|
|
@ -150,6 +162,8 @@ symbols: |
|
|
|
* magic symbols automatically generated by the linker. Names are |
|
|
|
often like __start_* and __stop_* |
|
|
|
|
|
|
|
* symbols starting with _dl_* come from the dynamic linker |
|
|
|
|
|
|
|
* symbols resolved by using libgcc.a |
|
|
|
(__udivdi3, __umoddi3, or similar) |
|
|
|
|
|
|
|
@ -165,7 +179,7 @@ errors while linking before deciding there is a problem. |
|
|
|
[Q8] ``I expect GNU libc to be 100% source code compatible with |
|
|
|
the old Linux based GNU libc. Why isn't it like this?'' |
|
|
|
|
|
|
|
[A8] {DMT} Not every extension in Linux libc's history was well |
|
|
|
[A8] {DMT,UD} Not every extension in Linux libc's history was well |
|
|
|
thought-out. In fact it had a lot of problems with standards compliance |
|
|
|
and with cleanliness. With the introduction of a new version number these |
|
|
|
errors now can be corrected. Here is a list of the known source code |
|
|
|
@ -190,6 +204,14 @@ incompatibilities: |
|
|
|
corresponds to the third argument of the Linux reboot system call. |
|
|
|
That is, a call of the form reboot(a, b, c) needs to be changed into |
|
|
|
reboot(c). |
|
|
|
Beside this the header <sys/reboot.h> defines the needed constants |
|
|
|
for the argument. These RB_* constants should be used instead of the |
|
|
|
cryptic magic numbers. |
|
|
|
|
|
|
|
* swapon(): the interface of this function didn't changed, but the |
|
|
|
prototype is in a separate header file <sys/swap.h>. For the additional |
|
|
|
argument of of swapon() you should use the SWAP_* constants from |
|
|
|
<linux/swap.h>, which get defined when <sys/swap.h> is included. |
|
|
|
|
|
|
|
* errno: If a program uses variable "errno", then it _must_ include header |
|
|
|
file <errno.h>. The old libc often (erroneously) declared this variable |
|
|
|
@ -215,12 +237,26 @@ incompatibilities: |
|
|
|
init_module init_module <sys/module.h> |
|
|
|
syslog ksyslog_ctl <sys/klog.h> |
|
|
|
|
|
|
|
* lpd: Older versions of lpd depend on an routine called _validuser(). |
|
|
|
* lpd: Older versions of lpd depend on a routine called _validuser(). |
|
|
|
The library does not provide this function, but instead provides |
|
|
|
__ivaliduser() which has a slightly different interfaces. Simply |
|
|
|
upgrading to a newer lpd should fix this problem (e.g., the BSD 4.4 |
|
|
|
upgrading to a newer lpd should fix this problem (e.g., the 4.4BSD |
|
|
|
lpd is known to be working). |
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|
|
|
[Q9] ``Why does getlogin() always return NULL on my Linux box?'' |
|
|
|
|
|
|
|
[A9] {UD} The GNU C library has a format for the UTMP and WTMP file |
|
|
|
which differs from what your system currently has. It was extended to |
|
|
|
fulfill the needs of the next years when IPv6 is introduced. So the |
|
|
|
record size is different, fields might have a different position and |
|
|
|
so reading the files written by functions from the one library cannot |
|
|
|
be read by functions from the other library. Sorry, but this is what |
|
|
|
a major release is for. It's better to have a cut now than having no |
|
|
|
means to support the new techniques later. |
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|
|
|
|
|
|
|
|
|
|
|
|