From: hlu@yoda.eecs.wsu.edu (Hongjiu Lu -- Graduate Student) Subject: gcc 2.1 beta is available Date: Mon, 6 Apr 92 05:17:24 GMT Hi, I am putting gcc 2.1 beta on headrest.woz.colorado.edu under /pub/linux/gcc and banjo.concert.net under /pub/Linux/GCC. They should be there in a few hours. Drew, could you please move 2.1lib.tar.Z, 2.1misc.tar.Z, libc-2.1.tar.Z and 2.1shared-A.tar.Z to /pub/linux/gcc? Although gcc 2.1 is beta, it is quite stable. During the alpha testing stage, we fixed lots of bugs. It should run well for most of you. But I cannot guarantee it has no bugs. If you find any bug, please send it to me at "hlu@eecs.wsu.edu" as well as the channel "GCC" on the Linux mailing list. THANKS TO ALL THE ALPHA TESTERS. You did a great job and help me a lot, Without you guys, I cannot image how I could find all those bugs. I am enclosing the FAQ for gcc 2.1. PLEASE DO READ IT. It may have the answers for your questions. You must follow the instructions in the FAQ. I also put a patch, 2.1kernel.tar.Z, for kernel to compile with gcc 2.1. You have to apply Linus' second patch first. And another package, 2.1ps.tar.Z, for ps is modified by me to gcc 2.1. BTW, make sure tar and compress you have are working right. Some problems for the previous gcc 2.1 seemed to be caused by bad tar/compress. H.J. -- School of EECS Internet: hlu@eecs.wsu.edu Washington State University BITNET: 60935893@WSUVM1.BITNET Pullman, WA 99164 Phone: (509) 335-6470 (O) USA (509) 334-6315 (H) =========FAQ======= QUESTION: Where is the gcc 2.1 beta? ANSWER: It's on banjo.concert.net under /pub/Linux/GCC and headrest.woz.colorado.edu under /pub/linux/?. You may find it on the other sites. But I am not sure if they are up to date. There are two files, 2.1lib.tar.Z and 2.1misc.tar.Z. Another file, binutils.tar.Z, is not the part of gcc 2.1, but used by gcc 2.1. It contains all the binary utilities you need to run gcc 2.1. There may be also some files called 2.1shared-x.tar.Z. They have some programs compiled in .a format. Please take a look at /usr/shared/obj/README* after unpack 2.1shared-A.tar.Z under /usr. QUESTION: What are the contents of them? ANSWER: 2.1lib.tar.Z contains cc1, cc1plus and cpp. 2.1misc.tar.Z contains gcc 2.1 drivers, header files, libraries, manual pages and installation instructions. QUESTION: How do I install it? ANSWER: First of all, backup the old compiler if you have one and remove it from your hard drive. YOU MUST BE ABSOLUTELY SURE THERE IS NO ANY OTHER C COMPILER ON YOUR SYSTEM INSTALLED. I heard too much stories about it. By compiler, I mean the executables, libraries (crt0.o) and header files. This gcc 2.1 will only work with the kernel above 0.95. You may have to have 2 MB ram to run it and have some swap space (> 4MB) since cc1 and cc1plus are about 1 MB. First do cd /usr tar xvpfvz xxxx/2.1misc.tar.Z Then read FAQ in /usr/install/gcc2. After cd /usr tar xvpfvz xxxx/2.1lib.tar.Z run the shell script "inst2.x". If you need binutils.tar.Z, do a cd /usr tar xvpfvz xxxx/binutils.tar.Z Please check the file permission for all files you have unpacked. Maybe I should write a shell script to do that. QUESTION: How do I install a new release of gcc 2.1? ANSWER: Depends on the nature of the new release, if the gcc itself is changed, you have to install everything in 2.1lib.tar.Z and 2.1misc.tar.Z come with the new release. If just the libraries are changed, you can just pick 2.1update.tar.Z and unpack it in /usr. Then do cd /usr tar xvpfvz xxxx/2.1update.tar.Z cd /usr/install/gcc2 update2.x In both cases, it is recommended to relink all the shared executables. If the gcc itself is changed, a new set of .a's may be released too. QUESTION: What are the main differences with the old release? ANSWER: Here are the features 1. gcc and g++ are in one. 2. ANSI and BSD 4.4 compatible stdio. 3. iostream for g++. It has * Full implementation of ANSI C stdio. * Full implementation of the streambuf layer of AT&T's iostream library for C++. * Full compatibility between stdio and streambufs. and libg++.a 2.0. 4. Libc.a is almost new. Most of glibc.a 1.02 (nonnetwork stuffs) are here. a. ctype b. grp c. locale d. malloc (libmcheck.a) e. posix f. pwd g. stdlib h. string Some other functions are added. b. cvt b. drand48 c. getlogin (poeigl-1.2) d. getpass (poeigl-1.2) e. mkfifo (is that supported in kernel?) f. regex (GNU) g. curses (BSD) h. swab i. time (BSD, untested) j. ufc k. utmp stuffs (poeigl-1.2) These old functions are not changed very much. a. soft math (fmod is added) b. math (some are new) c. termcap d. unistd 5. The shared libraries are here. To link with the static libraries, add the -static flag to gcc. QUESTION: Is stdio ANSI compatible? ANSWER: Yes, please test it. QUESTION: Is g++ in 2.1? ANSWER: Yes. Use g++ to compile the C++ code. Libg++.a 2.0 is here. One thing missing is curses. I will take a look if I have time. And fix.o failed to compile. QUESTION: What options can I use for gcc? ANSWER: Read manual page, gcc.ps or gcc.man. -O3, -O4, -O5 or even higher should work with 2.1. -O3 is said to be the best. Don't ask me why. Try it yourself. Also -static tells gcc to use the static libraries. The default is the shared libraries. QUESTION: Where is the source code of the new libc.a? ANSWER: The same place you find this file. It is called libc-2.1.tar.Z. QUESTION: How can I use gcc 2.1 to compile the kernel? ANSWER: The kernel has to be compiled with the header files come with it. I will ask Linus to make it easy for you. Please keep in mind, kernel uses the different header files. Do not include any header files from gcc 2.1. It can be done by using cc -nostdinc -I.... QUESTION: Why does gcc say "foo.h not found" when compiling the kernel and I am following the instruction above? ANSWER: Not every source code under ./linux is kernel code. By kernel, I mean those linked together and written to boot image. If there is a file which is compiled to run under Linux, that is an application and you should follow the instruction below. QUESTION: How can I use gcc 2.1 to compile applications? ANSWER: Any application has to be compiled with the header files come with gcc 2.1. If you need some header files from the kernel sources, do a #include "/foo/src/linux/include/linux/bar.h" It is strongly recommended to prototype all the library functions by including the appropriate head files. At least, it will save you trouble of malloc (0). QUESTION: Why does a program compiled ok by gcc 2.1 and the new binary utilities get an error from kernel saying something about binary file format? ANSWER: Linux has changed a.out.h. The new a.out.h is compatible with the applications compiled with the old a.out.h. But if an application is compiled with the new a.out.h, you have to use the new a.out.h. If you get this error message, you should get the new a.out.h and old ld from where you get this and use them to recompile the kernel. QUESTION: Why does g++ complain? ANSWER: You need "expr". It is in GNU shell utilities 1.6.
From: hlu@luke.eecs.wsu.edu (Hongjiu Lu -- Graduate Student) Crossposted-To: alt.os.linux Subject: IMPORTANT: gcc 2.1, libc.a 2.1a and Linux Date: 6 Apr 92 21:15:00 GMT Hi, I heard there were some problems with binaries linked with my new ld. That is caused by the new a.out.h introduced with Linus's second patch. The new a.out.h is compatible with the old one, But not vice versa. My new ld (binutils.tar.Z) uses the new a.out.h. The binaries linked by it can only run under the kernel with Linus's second patch, which has to be built by the old ld. Any programs using the old a.out.h, e.g., gdb, will not recognize the binaries linked by the new ld. You can either use the old ld or use the new version compiled with the new a.out.h. From Linus's second patch, we are moving to VFS. As a result, there will be some changes in libc.a. That means next release of gcc 2.x and libs will not run under the kernel below Linus's second patch to 0.95a. I strongly recommend you move to 0.95a with Linus's second patch if you haven't done so. H.J.
From: hlu@luke.eecs.wsu.edu (Hongjiu Lu -- Graduate Student) Subject: FAQ: gcc 2.1 and kernel Date: Tue, 7 Apr 92 20:14:20 GMT Hi, There seems some confusion about how to use gcc 2.1 to compile 0.95a kernel with Linus's second patch. That may be my fault. Ok. Here is the new FAQ for gcc 2.1. Please save it. THE ONE ON FTP SITES IS NOT SO CLEAR AS THIS ONE. H.J. ==========FAQ FOE GCC 2.1==== QUESTION: Where is the gcc 2.1 beta? ANSWER: It's on banjo.concert.net under /pub/Linux/GCC and headrest.woz.colorado.edu under /pub/linux/gcc. You may find it on the other sites. But I am not sure if they are up to date. There are two files, 2.1lib.tar.Z and 2.1misc.tar.Z. Another file, binutils.tar.Z, is not the part of gcc 2.1, but used by gcc 2.1. It contains all the binary utilities you need to run gcc 2.1. There may be also some files called 2.1shared-x.tar.Z. They have some programs compiled in .a format. It has almost everything you want for Linux. Please take a look at /usr/shared/obj/README* after unpack 2.1shared-A.tar.Z under /usr. QUESTION: What are the contents of them? ANSWER: 2.1lib.tar.Z contains cc1, cc1plus and cpp. 2.1misc.tar.Z contains gcc 2.1 drivers, header files, libraries, manual pages and installation instructions. QUESTION: How do I install it? ANSWER: First of all, backup the old compiler if you have one and remove it from your hard drive. YOU MUST BE ABSOLUTELY SURE THERE IS NO ANY OTHER C COMPILER ON YOUR SYSTEM INSTALLED. I have heard too many stories about it. By compiler, I mean the executables, libraries (crt0.o) and header files. This gcc 2.1 will only work with the kernel above 0.95. You may have to have 2 MB ram to run it and have some swap space (> 4MB) since cc1 and cc1plus are about 1 MB. First do cd /usr tar xvpfvz xxxx/2.1misc.tar.Z Then read FAQ in /usr/install/gcc2. After cd /usr tar xvpfvz xxxx/2.1lib.tar.Z run the shell script "inst2.x". If you need binutils.tar.Z, do a cd /usr tar xvpfvz xxxx/binutils.tar.Z Please check the file permission for all files you have unpacked. Maybe I should write a shell script to do that. QUESTION: How do I install a new release of gcc 2.1? ANSWER: Depends on the nature of the new release, if the gcc itself is changed, you have to install everything in 2.1lib.tar.Z and 2.1misc.tar.Z come with the new release. If just the libraries are changed, you can just pick 2.1update.tar.Z and unpack it in /usr. Then do cd /usr tar xvpfvz xxxx/2.1update.tar.Z cd /usr/install/gcc2 update2.x In both cases, it is recommended to relink all the shared executables. If the gcc itself is changed, a new set of .a's may be released too. QUESTION: What are the main differences with the old release? ANSWER: Here are the features 1. gcc and g++ are in one. 2. ANSI and BSD 4.4 compatible stdio. 3. iostream for g++. It has * Full implementation of ANSI C stdio. * Full implementation of the streambuf layer of AT&T's iostream library for C++. * Full compatibility between stdio and streambufs. and libg++.a 2.0. 4. Libc.a is almost new. Most of glibc.a 1.02 (nonnetwork stuffs) are here. a. ctype b. grp c. locale d. malloc (libmcheck.a) e. posix f. pwd g. stdlib h. string Some other functions are added. b. cvt b. drand48 c. getlogin (poeigl-1.2) d. getpass (poeigl-1.2) e. mkfifo (is that supported in kernel?) f. regex (GNU) g. curses (BSD) h. swab i. time (BSD, untested) j. ufc k. utmp stuffs (poeigl-1.2) These old functions are not changed very much. a. soft math (fmod is added) b. math (some are new) c. termcap d. unistd 5. The shared libraries are here. To link with the static libraries, add the -static flag to gcc. QUESTION: Is stdio ANSI compatible? ANSWER: Yes, please test it. QUESTION: Is g++ in 2.1? ANSWER: Yes. Use g++ to compile the C++ code. Libg++.a 2.0 is here. One thing missing is curses. I will take a look if I have time. And fix.o failed to compile. QUESTION: What options can I use for gcc? ANSWER: Read manual page, gcc.ps or gcc.man. -O3, -O4, -O5 or even higher should work with 2.1. -O3 is said to be the best. Don't ask me why. Try it yourself. I was told you could manipulate those optimation flags to get the best performance. Also -static tells gcc to use the static libraries. The default is the shared libraries. QUESTION: Where is the source code of the new libc.a? ANSWER: The same place you find this file. It is called libc-2.1.tar.Z. QUESTION: How can I use gcc 2.1 to compile the kernel? ANSWER: The kernel has to be compiled with the header files come with it. Please use my 2.1kernel.tar.Z and 2.1ps.tar.Z, which can be found where you get gcc 2.1. The kernel uses its own header files. Do not include any header files from gcc 2.1 while compiling the kernel. QUESTION: Why does gcc say "foo.h not found" when compiling the kernel and I am following the instructions above? ANSWER: Not every source code under ./linux is kernel code. By kernel, I mean those linked together and written to boot image. If there is a file which is compiled to run under Linux, that is an application and you should follow the instruction below. ./tools/build is one of them. It should be compiled with gcc 2.1 header files. Please read my 2.1kernel.tar.Z. QUESTION: How can I use gcc 2.1 to compile applications? ANSWER: Any application has to be compiled with the header files come with gcc 2.1. If you need some header files from the kernel sources, do a #include "/foo/src/linux/include/linux/bar.h" It is strongly recommended to prototype all the library functions by including the appropriate head files. At least, it will save you trouble of malloc (0) (read stdlib.h). QUESTION: Why does a program compiled ok by gcc 2.1 and the new binary utilities get an error from kernel saying something about binary file format or some weird things? ANSWER: Linux has changed a.out.h. The new a.out.h in Linus' second patch is compatible with the applications compiled with the old a.out.h. But if an application is compiled with the new ld (binutils.tar.Z) which uses the new a.out.h, you have to use the kernel compiled with the new a.out.h. You have to recompile the kernel with Linus' second patch applied and old ld. And then use new ld to link the programs. QUESTION: Why does g++ complain even die? ANSWER: You need "expr", which is in GNU shell utilities 1.6, echo (?) and sed.
From: hlu@phys1.physics.wsu.edu (Hongjiu Lu) Subject: New binutils.tar.Z Date: 7 May 92 00:19:54 GMT I just put a new binutils.tar.Z on banjo.concert.net under /pub/Linux/GCC. It just contains a bug fix and now it can handle g++ 2.1 symbols. H.J.
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: gcc 2.11b is released Date: Mon, 18 May 92 03:08:04 GMT A new release of gcc 2.1, gcc 2.11b for linux, is on banjo.concert.net and headrest.woz.colorado.edu. Along with 2.11b, there is a binutils.tar.Z, which is used to replace the old buggy one. Please get it too. This release just contains some minor fixes for 2.11b. 1. sleep (0) is fixed. 2. All binaries are recompiled with new gas. 3. X11R5 is not the part of gcc anymore. H.J.
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: This is for Orest. Date: Mon, 18 May 92 03:26:47 GMT I am trying to send you shlib.tar.Z. But my mail was bounced back again. Now I put shlib.tar.Z on banjo under /pub/Linux/Gcc. Hi, I have released 2.11b, which fixes the bug in gcc 2.1. You may want to recompile all the X11R5. Please use this to build the shared images for X11R5. You can see there are stubs libs in shlib/lib, which are almost the same as the ones in /usr/lib/shared, but there are no dummies for loading the shared images. Those stubs libs are only for building the shared libs which need them. Please get 2.11b and binutils.tar.Z. They are rebuilt due to the bug in gcc 2.1. H.J.
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: gcc 2.11c is released with source code Date: 20 May 92 05:36:12 GMT Hi, Here is the relaese note for gcc 2.11c. H.J. ========= This release just contains some minor improvements over 2.11b. It is on banjo.concert.net under /pub/Linux/GCC. ldd is supported. The source code of the libraries is in libc-2.11c.tar.Z. There are two files, gcc-2.1.tar.Z, for compiler, including some tips for cross-compiling, shlib-2.11c.tar.Z, for building the shared libs. H.J. Lu hlu@eecs.wsu.edu 05/19/92
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: README: gcc 2.2.2 is out Date: 28 Jun 92 02:08:00 GMT NOTE: You should only use gcc 2.2.2 for Linux. You should only use the binaries compiled by it. Anything else may contain bugs due to buggy gcc from the FSF and buggy libc.a. The official gcc 2.2.2 is out on banjo.concert.net under pub/Linux/GCC. Please READ all the docs when you install it. Missing one senetnce may mean a failure. The official gcc ftp site is banjo.concert.net. I can guarantee the files are up to date. But I have no control over any other sites. If you have any doubt, PLEASE USE banjo.concert.net. If you are mirroring banjo for gcc, please make sure your directory is exactly the same as pub/Linux/GCC on banjo, except for pub/Linux/GCC/private, which is for gcc testing. Otherwise, please don't mirror it to avoid any confusions. I also uploaded zsh.tar.Z together with gcc 2.2.2. You have to use gcc 2.2.2 to link zsh.a to make zsh. H.J. -- gcc/libc maintainer for Linux. =============release.2.2.2==== This is a testing release until it is announced on comp.os.linux. Please read all the previous release notes and docs. This release note only covers the new stuffs. This is gcc 2.2.2 for Linux. It is on banjo.concert.net under /pub/Linux/GCC. Gcc 2.3 will support Linux, according to RMS. The FSF has all the files Linux needs. Please get the new binutils.tar.Z, which fixed some bugs in as and a gprof with some patches from Rick Sladkey at jrs@world.std.com, if you haven't got it. I added some jumptable stubs to gcc. But I don't have the time to implement it. In the future, you can use jump table with -jump in CFLAGS. Libg++.a is 2.2 beta. This gcc will produce binaries only run safely under 0.96a patch level 4 or above. The list of known bugs. 1. one 'cmp' in dbz test fails. Per is not planning on doing anything about it. your contribution is welcome. The following bugs in libc.a are fixed. 1. hard and soft math libs are fixed. some of functions are totally rewritten. 2. acosh, asinh and atanh are added to libsoft.a and math.h. 3. open a file for read and write, then do fseek followed by fwrite works now. 4. now random () and srandom () are renamed to __random () and __srandom (), respectively. 5. the header files taken from glibc.a are fixed. 6. the sys call mount now takes 4 args. 7. getpagesize and getdtablesize work now. 8. netdb.h, resolv.h, sys/uio.h, netinet.h, arpa/inet.h and arpa/nameser.h are changed. 9. Some function declarations are added to sys/socket.h in 0.96bp2inc.tar.Z. The following functions are added to libc.a. 1. profil. 2. libg.a is there. 3. getdtablesize. 4. lots of stuffs added to errno.h and string/errlist.c. 5. some changes in string/siglist.c. 6. dtoa. 7. there is a new strtod, please check it out. 8. drem. 9. the inet library functions are in libinet.a. They are untested. Once they are tested ok, they will be moved to libc.a. All the inet library functions are there, except for res_xxxx, rcmd, rexec and ruserpass, which require more kernel support, like F_SETOWN, FASYNC, and a few network system calls. There should also be a set of files in /etc for inet functions. I hope Ross will provide them. In this release, there is a libc_p.a compiled with "-pg" for profiling. You should use "-g" for debugging and "-pg/-p" for profiling in CFLAGS when you compile the source code. There must be a few other bugs. Please let me know if you find any. File list: 1. 2.2.2db.tar.Z (cpp, libg.a and libc_p.a) 2. 2.2.2lib.tar.Z (cc1, cc1plus) 3. 2.2.2misc.tar.Z (header files, drivers, libs, doc, ....) 4. shlib-2.2.2.tar.Z (making the shared libs for gcc 2.2.2) 5. libc-2.2.2.tar.Z (source code for the libs) 6. gcc-2.2.2.tar.Z (patches for compiling gcc 2.2.2) 7. 0.96bp2inc.tar.Z (the kernel header files for 0.96b patch level 2) H.J. hlu@eecs.wsu.edu 06/27/92 =============release.2.2==== Please read all the previous release notes and docs. This release note only covers the new stuffs. This is gcc 2.2 for Linux, which is equivalent to gcc 2.2.1 from the FSF. It is on banjo.concert.net under /pub/Linux/GCC. Gcc 2.3 will support Linux, according to RMS. The FSF has all the files Linux needs. Please get the new binutils.tar.Z, which fixed some bugs in as. >From this release, gcc will use the shared lib. That means you have to keep the shared images used by all the compilers you have. I think there is no disk waste here since the benefit of the shared gcc more than offsets the shared libs. Now both 2.2misc.tar.Z and 2.2lib.tar.Z can fit into one 5.25 floppy. Libg++.a is 2.1. You can build it yourself. The source code is available on the GNU ftp site. You may have to hack a little to compile it. Please do not compile iostream and get rid of libg++/src/regex.[cc|h]. Make sure ./libiberty only makes those functions Linux doesn't have. Please send me a note if you are interested. The following bugs in libc.a are fixed. 1. index. 2. sigxxxx return values should be right now. 3. execxxx are taken from glibc.a 1.03. Please check it out. 4. malloc in stdlib.h and malloc.h, when they are included together, they may cause trouble. Can I include malloc.h in stdlib.h and fix malloc in malloc.h? 5. types used in sigsetmask and siggetmask are now sigset_t. 6. signal.h is changed. 7. hypot added to math.h 8. __cpluseplus in setjmp.h 9. prototype of gdbm_open in gdbm.h 10. Per is trying to fix fseek/fwrite with file opened for read and write. 11. dirent.[ch] are fixed such that static memory no longer is used in readdir (). 12. sys/dir.h sys/dirent.h are modified such that there will be a warning when both of them are included. They are also compatible now. 13. __cpluscplus in fnmath.h 14. gets () will only give a warning during linking. 15. wait3 (). 16. <stdio.h> is fixed. fputc, fgets and gets are no longer macros. 17. <sys/user.h> is added in 0.96ap2inc.tar.Z. 18. The return value of clock ticks of the old sysconf () was wrong. It returned 60 instead of 100. 19. The domain errors in the math libraries are improved. 20. bsearch and qsort are fixed for zero element. The following functions are added to libc.a. 1. accept 2. bind 3. bstring 4. connect 5. ftime 6. fchmod 7. fchown 8. ftruncate 9. getpagesize 10. getpeername 11. getsockname 12. getwd 13. ioperm 14. itimer. 15. listen 16. mmap 17. mntent. 18. ntohs/htons 19. ntohl/htonl 20. psignal 21. ptrace 22. setenv/unsetenv 23. sigsetmask 24. siggetmask 25. socket 26. socketpair 27. statfs () and fstatfs (). 28. tell (bsd) 29. truncate 30. usleep 31. vfork 32. wait3() and wait4 (). Gdbm 1.5 is here for X11R5. popen now is based on iostream. I also changed the structure of header files. To install the gcc 2.2, please do this first tar cfz inc.bak.tar.Z /usr/include /usr/g++-include /bin/rm -rf /usr/include /usr/g++-include A new structure of gcc is introduced here. All the static libs are in /usr/lib/gcc-lib/i386-linux/2.xxx and all the shared libs are in /usr/lib/gcc-lib/i386-linux/2.xxx/shared. By default, gcc will search /usr/lib/gcc-lib/i386-linux/2.xxx/shared first, then the static libs. You can turn off the shared libs with "-static". BTW, you can still use the old compiler, xxx, with gcc -V xxx which will use the corresponding shared/static libs for that version. That will make life for X11 easier. The default should be the same as gcc -V 2.2 If you want to keep gcc 2.11c, please read FAQ. For the older version, 2.12d or above, it is done automatically. There is a new file for making the shared images for gcc 2.2, shlib-2.2.tar.Z. Please use that to build the shared libs. In this file, a new naming scheme is used. The shared images will be called "libc.2.2", which I think is better than "libc_v_2_2". BTW, you need awk for inst2.x now. There must be a few bugs. Please let me know if you find any. File list: 1. 2.2lib.tar.Z (cpp, cc1, cc1plus) 2. 2.2misc.tar.Z (header files, drivers, libs, doc, ....) 3. shlib-2.2.tar.Z (making the shared libs for gcc 2.2) 4. libc-2.2.tar.Z (source code for the libs) 6. gcc-2.2.1.tar.Z (patches for compiling gcc 2.2.1) 7. 0.96ap2inc.tar.Z (the kernel header files for 0.96a patch level 2 with <sys/user.h>) 8. 0.96ainc.tar.Z (the kernel header files for 0.96a) H.J. hlu@eecs.wsu.edu 06/16/92
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: The official gcc FAQ Date: 28 Jun 92 02:12:23 GMT This is the offical gcc FAQ. Don't believe anything else. H.J. ========== gcc/libc maintainer for Linux ===========FAQ===== QUESTION: What compiler should I use for Linux? ANSWER: You should only use the same version on banjo.concert.net under /pub/Linux/GCC. If you want to use the testing release, first join the GCC channel on the Linux mailing list, and then send a note to hlu@eecs.wsu.edu. Don't use gcc older than the one on banjo.concert.net. QUESTION: Where is the latest official gcc 2.xx for Linux? ANSWER: It's on banjo.concert.net under /pub/Linux/GCC, maybe also fgb1.fgb.mw.tu-muenchen.de under pub/linux/GCC. You may find it on the other sites. But I am not sure if they are up to date. There are 3 files, 2.xxdb.tar.Z, 2.xxlib.tar.Z and 2.xxmisc.tar.Z. Another file, binutils.tar.Z, is not the part of gcc 2.xx, but used by gcc 2.xx. It contains all the binary utilities you need to run gcc 2.xx. You should read the release note to see if you should get the new binutils.tar.Z. QUESTION: What are the contents of them? ANSWER: 2.xxdb.tar.Z contains cpp, libg.a and libc_p.a. 2.xxlib.tar.Z contains cc1 and cc1plus. 2.xxmisc.tar.Z contains gcc 2.xx drivers, header files, libraries, manual pages and installation instructions. Another file, XXXXinc.tar.Z, where XXXX is the current version number of Linux kernel, has all the header files to replace the header files from kernel. YOU MUST INSTALL IT. Please read README for details. QUESTION: Is it possible to have gcc 2.12d or above installed and also compile X11 v1.0 stuff ?? (i.e. have gcc2.11c co-existing). ANSWER: If your X11 requires gcc 2.11c, please read the following. If your X11 requires gcc 2.2.2, just skip the following. You don't have to do anything. First, erase any old compilers you already have installed. Basically, remove these directories: /usr/{include,g++-include,install,shared} /usr/lib/{gcc-lib,static,shared}. Now unpack and re-install 2.11c. Don't forget to run inst2.x. If you want to use the shared X libs compiled with gcc 2.11c, INSTALL IT NOW. The directory structure of gcc is re-arranged starting from 2.12d (for the better) so we need move things around in 2.11c. In /usr/lib/gcc-lib/i386-linux/2.11c, rename all of the Lib*.a files to lib*.a. Now create a new subdirectory called "shared" and copy all of the files in /usr/lib/shared, including those X11 shared libs compile with gcc 2.11c, to it. You can now remove /usr/{shared,install} and /usr/lib/{static,shared}. Make a new directory, mkdir /usr/lib/gcc-lib/i386-linux/2.11c/include Then move assert.h, float.h, limits.h, proto.h, stddef.h, stdarg.h, varargs.h and va-*.h (if you have them.) to /usr/lib/gcc-lib/i386-linux/2.11c/include Those files are version-dependent. You have to put them there. Now remove /usr/{include,g++-include}. OK, now unpack and install the new version of gcc, 2.12d or above. Also, reinstall /usr/include/X11 from X11R5 v1.0. Again, don't forget to run inst2.x and fixfiles. We're almost there now, we just need to tell gcc how to use the 2.11c shared libs. Run 'gcc -V 2.11c -dumpspecs' and re-direct the output to /usr/lib/gcc-lib/i386-linux/2.11c/specs. Now look at .../2.11c/specs. You may need to edit it and change version number to 2.11c. That's it. You should now be able to use 2.11c by specifying -V 2.11c. If you don't specify either, you should get the new version by default. QUESTION: How do I install it? ANSWER: Do cd /usr tar xofz 2.xxmisc.tar.Z and then read README in /usr/install/gcc2. QUESTION: What are the main differences with the old release? ANSWER: Do cd /usr tar xofz 2.xxmisc.tar.Z and then read README in /usr/install/gcc2. QUESTION: Is stdio ANSI compatible? ANSWER: Yes, please test it. QUESTION: Is g++ in 2.xx? ANSWER: Yes. QUESTION: What options can I use for gcc? ANSWER: Read manual page, gcc.ps or gcc.man. -O3, -O4, -O5 or even higher should work with 2.xx. -O3 is said to be the best. Don't ask me why. Try it yourself. I was told you could manipulate those optimization flags to get the best performance. Also -static tells gcc to use the static libraries. The default is the shared libraries. QUESTION: Where is the source code of the new libc.a? ANSWER: The same place you find this file. It is called libc-2.xx.tar.Z. QUESTION: Why does g++ complain, even die? ANSWER: You need "expr", which is in GNU shell utilities 1.6, echo (?) and sed. QUESTION: How do I generate code for 486? ANSWER: Add -m486 to CFLAGS. QUESTION: I heard malloc (0) wouldn't work with Linux, what should I do? ANSWER: include <stdlib.h> and don't define NO_FIX_MALLOC.
From: hlu@luke.eecs.wsu.edu (H.J. Lu) Subject: README: fixed gcc 2.2.2 and zsh 2.2 Date: 28 Jun 92 23:11:36 GMT Hi, I just fixed some bugs. I have put the fixed gcc 2.2.2 on banjo.concert.net under pub/Linux/GCC. Here is the list of the files you can use to patch the old gcc 2.2.2. 1. 2.2.2fix1.tar.Z. It contains the shared libs and include/mntent.h. This is minimum you have to apply. Do cd /usr tar xvvofz 2.2.2fix1.tar.Z mv /usr/lib/gcc-lib/i386-linux/2.2.2/shared/libc.2.2.2 /lib mv /usr/lib/gcc-lib/i386-linux/2.2.2/shared/lib[hard|soft].2.2.2 /lib/libm.2.2.2 2. 2.2.2fix2.tar.Z. It has the static libc.a and libcurses.a, as well as libc_p.a and libg.a. Do cd /usr tar xvvofz 2.2.2fix2.tar.Z 3. libc-2.2.2.fix.tar.Z. It has ./libc-linux/string/siglist.c, ./libc-linux/mntent/mntent.c and ./libc-linux/curses/newwin.c. If you are not sure what you are doing, please get the whole new gcc 2.2.2 and reinstall it. There were some more bugs in zsh 2.2. I have fixed them. I put two new files for zsh on banjo.concert.net under pub/Linux/GCC. One is zsh.linux.tar.Z, which has the patches for Linux and zsh.a. The other is zsh.doc.tar.Z, which has the basic docs for zsh. If you are mirroring gcc 2.2.2, please delete zsh.tar.Z from your site. I think we should put zsh linked with the shared libs on the root disk. I also made some changes to the shared image. Now /lib/libc.2.2.2 contains libc.a, libdbm.a, libcurses.a and libtermcap.a. Orest and David, please get the new shlib-2.2.2.tar.Z for details. H.J. ---- gcc/libc maintainer for Linux
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: FAQ for gcc Date: 3 Jul 92 00:20:07 GMT QUESTION: What compiler should I use for Linux? ANSWER: You should only use the same version on banjo.concert.net under /pub/Linux/GCC. If you want to use the testing release, first join the GCC channel on the Linux mailing list, and then send a note to hlu@eecs.wsu.edu. Don't use gcc older than the one on banjo.concert.net. QUESTION: Where is the latest official gcc 2.xx for Linux? ANSWER: It's on banjo.concert.net under /pub/Linux/GCC and fgb1.fgb.mw.tu-muenchen.de under pub/linux/GCC. You may find it on the other sites. But I am not sure if they are up to date. There are 3 files, 2.xxdb.tar.Z, 2.xxlib.tar.Z and 2.xxmisc.tar.Z. Another file, binutils.tar.Z, is not the part of gcc 2.xx, but used by gcc 2.xx. It contains all the binary utilities you need to run gcc 2.xx. You should read the release note to see if you should get the new binutils.tar.Z. QUESTION: What are the contents of them? ANSWER: 2.xxdb.tar.Z contains cpp, libg.a and libc_p.a. 2.xxlib.tar.Z contains cc1 and cc1plus. 2.xxmisc.tar.Z contains gcc 2.xx drivers, header files, libraries, manual pages and installation instructions. Another file, XXXXinc.tar.Z, where XXXX is the current version number of Linux kernel, has all the header files to replace the header files from kernel. YOU MUST INSTALL IT. Please read README for details. QUESTION: Is it possible to have gcc 2.12d or above installed and also compile X11 v1.0 stuff ?? (i.e. have gcc2.11c co-existing). ANSWER: If your X11 requires gcc 2.11c, please read the following. If your X11 requires gcc 2.2.2, just skip the following. You don't have to do anything. First, erase any old compilers you already have installed. Basically, remove these directories: /usr/{include,g++-include,install,shared} /usr/lib/{gcc-lib,static,shared}. Now unpack and re-install 2.11c. Don't forget to run inst2.x. If you want to use the shared X libs compiled with gcc 2.11c, INSTALL IT NOW. The directory structure of gcc is re-arranged starting from 2.12d (for the better) so we need move things around in 2.11c. In /usr/lib/gcc-lib/i386-linux/2.11c, rename all of the Lib*.a files to lib*.a. Now create a new subdirectory called "shared" and copy all of the files in /usr/lib/shared, including those X11 shared libs compile with gcc 2.11c, to it. You can now remove /usr/{shared,install} and /usr/lib/{static,shared}. Make a new directory, mkdir /usr/lib/gcc-lib/i386-linux/2.11c/include Then move assert.h, float.h, limits.h, proto.h, stddef.h, stdarg.h, varargs.h and va-*.h (if you have them.) to /usr/lib/gcc-lib/i386-linux/2.11c/include Those files are version-dependent. You have to put them there. Now remove /usr/{include,g++-include}. OK, now unpack and install the new version of gcc, 2.12d or above. Also, reinstall /usr/include/X11 from X11R5 v1.0. Again, don't forget to run inst2.x and fixfiles. We're almost there now, we just need to tell gcc how to use the 2.11c shared libs. Run 'gcc -V 2.11c -dumpspecs' and re-direct the output to /usr/lib/gcc-lib/i386-linux/2.11c/specs. Now look at .../2.11c/specs. You may need to edit it and change version number to 2.11c. That's it. You should now be able to use 2.11c by specifying -V 2.11c. If you don't specify either, you should get the new version by default. QUESTION: How do I install it? ANSWER: Do cd /usr tar xofz 2.xxmisc.tar.Z and then read README in /usr/install/gcc2. QUESTION: What are the main differences with the old release? ANSWER: Do cd /usr tar xofz 2.xxmisc.tar.Z and then read README in /usr/install/gcc2. QUESTION: Is stdio ANSI compatible? ANSWER: Yes, please test it. QUESTION: Is g++ in 2.xx? ANSWER: Yes. QUESTION: What options can I use for gcc? ANSWER: Read manual page, gcc.ps or gcc.man. -O3, -O4, -O5 or even higher should work with 2.xx. -O3 is said to be the best. Don't ask me why. Try it yourself. I was told you could manipulate those optimization flags to get the best performance. Also -static tells gcc to use the static libraries. The default is the shared libraries. QUESTION: Where is the source code of the new libc.a? ANSWER: The same place you find this file. It is called libc-2.xx.tar.Z. QUESTION: Why does g++ complain, even die? ANSWER: You need "expr", which is in GNU shell utilities 1.6, echo (?) and sed. QUESTION: How do I generate code for 486? ANSWER: Add -m486 to CFLAGS. QUESTION: I heard malloc (0) wouldn't work with Linux, what should I do? ANSWER: include <stdlib.h> and don't define NO_FIX_MALLOC. QUESTION: Why does gcc say "xxxxx..h not found"? ANSWER: see QUESTION: What are the contents of them? QUESTION: I really followed every step in the documentation, but when I do "make", why does it say "don't how to make xxxxxx"? ANSWER: The dependency in Makefile is dated, you need to make a new one. Please get some guide on make and read Makefile. For the kernel sources, please do cd src/linux make dep
From: hlu@yoda.eecs.wsu.edu (H.J. Lu) Subject: FAQ about gcc (how to compile program under Linux) Date: Sun, 19 Jul 92 06:40:05 GMT QUESTION: What compiler should I use for Linux? ANSWER: You should only use the same version on banjo.concert.net under /pub/Linux/GCC. If you want to use the testing release, first join the GCC channel on the Linux mailing list, and then send a note to hlu@eecs.wsu.edu. Don't use gcc older than the one on banjo.concert.net. QUESTION: Where is the latest official gcc 2.xx for Linux? ANSWER: It's on banjo.concert.net under /pub/Linux/GCC and fgb1.fgb.mw.tu-muenchen.de under pub/linux/GCC. You may find it on the other sites. There are 3 files, 2.xxdb.tar.Z, 2.xxlib.tar.Z and 2.xxmisc.tar.Z. Another file, binutils.tar.Z, is not the part of gcc 2.xx, but used by gcc 2.xx. It contains all the binary utilities you need to run gcc 2.xx. You should read the release note to see if you should get the new binutils.tar.Z. QUESTION: What are the contents of them? ANSWER: 2.xxdb.tar.Z contains cpp, libg.a and libc_p.a. 2.xxlib.tar.Z contains cc1 and cc1plus. 2.xxmisc.tar.Z contains gcc 2.xx drivers, header files, libraries, manual pages and installation instructions. Another file, XXXXinc.tar.Z, where XXXX is the current version number of Linux kernel, has all the header files to replace the header files from kernel. YOU MUST INSTALL IT. Please read README for details. QUESTION: How do I install it? ANSWER: Read README and release notes. QUESTION: What are the main differences with the old release? ANSWER: Read README and release notes. QUESTION: Can I use the old version of gcc? ANSWER: Please get rid of gcc older than gcc 2.2.2. From gcc 2.2.2, you can do gcc -V xxxx where xxxx is the version number. Please read `release.xxxx' for detail. QUESTION: Is stdio ANSI compatible? ANSWER: Yes, please test it. QUESTION: Is g++ in 2.xx? ANSWER: Yes. QUESTION: What options can I use for gcc? ANSWER: Read manual page, gcc.ps or gcc.man. -O3, -O4, -O5 or even higher should work with 2.xx. -O3 is said to be the best. Don't ask me why. Try it yourself. I was told you could manipulate those optimization flags to get the best performance. Also -static tells gcc to use the static libraries. The default is the shared libraries. QUESTION: Where is the source code of the new libc.a? ANSWER: The same place you find this file. It is called libc-2.xx.tar.Z. QUESTION: Why does g++ complain, even die? ANSWER: You need "expr", which is in GNU shell utilities 1.6, echo (?) and sed. QUESTION: How do I generate code for 486? ANSWER: Add -m486 to CFLAGS. QUESTION: I heard malloc (0) wouldn't work with Linux, what should I do? ANSWER: include <stdlib.h> and don't define NO_FIX_MALLOC. QUESTION: Why does gcc say "xxxxx..h not found"? ANSWER: see QUESTION: What are the contents of them? QUESTION: I really followed every step in the documentation, but when I do "make", why does it say "don't how to make xxxxxx"? ANSWER: The dependency in Makefile is dated, you need to make a new one. Please get some guide on make and read Makefile. For the kernel sources, please do cd src/linux make dep QUESTION: What flags should I use for compiling under Linux? ANSWER: The Linux C library is almost 100% ANSI/POSIX compliant. It is also very compatible with SYSV and BSD. The C library is loaded with SYSV and BSD functions. There are three exceptions: 1. signal in Linux is POSIX. 2. tty in Linux is POSIX. 3. time functions are POSIX, plus a few BSD and SYSV extensions. When you compile a program under Linux, your best bet is include all the appropriate header files and use -Wall. All the usable functions and global variables are declared in the corresponding header files. YOU SHOULD NOT DEFINE ANY functions or global variables OF THE LINUX C LIBRARY IN YOUR CODE IF YOU WANT TO USE THE SHARED LIBRARIES. After saying all those, you now should know you can compile a program with -D_POSIX_SOURCE or -D_GNU_SOURCE (read <features.h> for details). With a few modifications you can even use -DSYSV, -DUSG or -DBSD. Please read the header files for details. To use malloc () and calloc () safely under Linux, please include <stdlib.h> and don't define NO_FIX_MALLOC. BTW, gcc -traditional should work with gcc 2.2.2d or above.