diff options
Diffstat (limited to 'FAQ')
-rw-r--r-- | FAQ | 60 |
1 files changed, 48 insertions, 12 deletions
diff --git a/FAQ b/FAQ index 2714779ae8..1a434d0c94 100644 --- a/FAQ +++ b/FAQ @@ -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. + + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |