]> gcc.gnu.org Git - gcc.git/blame - INSTALL/FAQ
*** empty log message ***
[gcc.git] / INSTALL / FAQ
CommitLineData
f2d76545
JL
1egcs Frequently Asked Questions
2
3
4How is egcs be different from gcc2?
5
6Six years ago, gcc version 1 had reached a point of stability. For the
7targets it could support, it worked well. It had limitations inherent in
8its design that would be difficult to resolve, so a major effort was made
9and gcc version 2 was the result. When we had gcc2 in a useful state,
10development efforts on gcc1 stopped and we all concentrated on making
11gcc2 better than gcc1 could ever be. This is the kind of step forward
12we want to make with egcs.
13
14In brief, the three biggest differences between egcs and gcc2 are
15these:
16
17
18 More rexamination of basic architectual decisions of
19 gcc and an interest in adding new optimizations;
20
21 working with the groups who have fractured out from gcc2 (like
22 the Linux folks, the Intel optimizations folks, Fortran folks)
23 including more front-ends; and finally
24
25 An open development model (see below) for the development process.
26
27
28These three differences will work together to result in a more
29useful compiler, a more stable compiler, a central compiler that works
30for more people, a compiler that generates better code.
31
32
33There are a lot of exciting compiler optimizations that have come
34out. We want them in gcc. There are a lot of front ends out there for
35gcc for languages like Fortran or Pascal. We want them easily
36installable by users. After six years of working on gcc2, we've come
37to see problems and limitations in the way gcc is architected; it is
38time to address these again.
39
40
41What is an open development model?
42
43With egcs, we are going to try a bazaar style[1] approach to its
44development: We're going to be making snapshots publically available
45to anyone who wants to try them; we're going to welcome anyone to join
46the development mailing list. All of the discussions on the
47development mailing list are available via the web. We're going to be
48making releases with a much higher frequency than they have been made
49in the past: We're shooting for three by the end of 1997.
50
51In addition to weekly snapshots of the egcs development sources, we
52are going to look at making the sources readable from a CVS server by
53anyone. We want to make it so external maintainers of parts of egcs
54are able to commit changes to their part of egcs directly into the
55sources without going through an intermediary.
56
57There have been many potential gcc developers who were not able to
58participate in gcc development in the past. We these people to help in
59any way they can; we ultimately want gcc to be the best compiler in the
60world.
61
62A compiler is a complicated piece of software, there will still be
63strong central maintainers who will reject patches, who will demand
64documentation of implementations, and who will keep the level of
65quality as high as it is today. Code that could use wider testing may
66be intergrated--code that is simply ill-conceived won't be.
67
68egcs is not the first piece of software to use this open development
69process; FreeBSD, the Emacs lisp repository, and Linux are a few
70examples of the bazaar style of development.
71
72With egcs, we will be adding new features and optimizations at a
73rate that has not been done since the creation of gcc2; these additions
74will inevitably have a temporarily destabilizing effect. With the help
75of developers working together with this bazaar style development, the
76resulting stability and quality levels will be better than we've had
77before.
78
79cathedral-vs-bazaar[1]
80 We've been discussing different development models a lot over the
81 past few months. The paper which started all of this introduced two
82 terms: A cathedral development model versus a bazaar
83 development model. The paper is written by Eric S. Raymond, it is
84 called `` http://locke.ccil.org/~esr/writings/cathedral.html" The
85 Cathedral and the Bazaar''. The paper is a useful starting point
86 for discussions.
87
88
89
90bits/libc-lock.h: No such file or directory
91egcs includes a tightly integrated libio and libstdc++ implementation which
92can cause problems on hosts which have libio integrated into their C library
93(most notably Linux).
94
95We believe that we've solved the major technical problems for the most
96common versions of libc found on Linux systems. However, some versions
97of Linux use pre-release versions of glibc2, which egcs has trouble detecting
98and correctly handling.
99
100If you're using one of these pre-release versions of glibc2, you may get
101a message "bits/libc-lock.h: No such file or directory" when building egcs.
102Unfortunately, to fix this problem you will need to update your C library to
103glibc2.0.5c.
104
105Late breaking news: we may have at least a partial solution for these
106problems. So this FAQ entry may no longer be needed.
107
108
109`_IO_stdfile_0_lock' was not declared in this scope
110If you get this error, it means either egcs incorrectly guessed what version
111of libc is installed on your linux system, or you incorrectly specified a
112version of glibc when configuring egcs.
113
114If you did not provide a target name when configuring egcs, then you've
115found a bug which needs to be reported. If you did provide a target name at
116configure time, then you should reconfigure without specifying a target name.
117
118
119Problems building the Fortran compiler
120The Fortran front end can not be built with most vendor compilers; it must
121be built with gcc. As a result, you may get an error if you do not follow
122the install instructions carefully.
123
124In particular, instead of using "make" to build egcs, you should use
125"make bootstrap" if you are building a native compiler or "make cross"
126if you are building a cross compiler.
127
128It has also been reported that the Fortran compiler can not be built
129on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
130binutils or to Red Hat 5.0; we'll provide more information as it becomes
131available.
132
133
134Problems building on MIPS platforms
135egcs requires the use of GAS on all versions of Irix, except Irix 6 due
136to limitations in older Irix assemblers.
137
138 Either of these messages indicates that you are using the MIPS assembler
139when instead you should be using GAS.
140
141 as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
142 .4byte $LECIE1-$LSCIE1
143 as0: Error: ./libgcc2.c, line 1:malformed statement
144
145
146
147 as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol in expression
148 .word $LECIE1-$LSCIE1
149
150
151 For Irix 6, you should use the native assembler as GAS is not supported
152on Irix 6.
153
154
155Problems with exception handling on x86 platforms
156If you are using the GNU assembler (aka gas) on an x86 platform and
157exception handling is not working correctly, then odds are you're using a
158buggy assembler.
159
160We recommend binutils-2.8.0.1.15 or newer.
161"ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.tar.gz binutils-2.8.0.1.15 source
162ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.bin.tar.gz binutils-2.8.0.1.15 x86 binary for libc5
163ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.glibc.bin.tar.gz binutils-2.8.0.1.15 x86 binary for glibc2
164Or, you can try a
165ftp://ftp.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz binutils snapshot; however, be aware that the binutils snapshot is untested
166and may not work (or even build). Use it at your own risk.
167
168
169Bootstrap comparison failures on HPs
170If you bootstrap the compiler on hpux10 using the HP assembler instead of
171gas, every file will fail the comparison test.
172
173The HP asembler inserts timestamps into object files it creates, causing
174every file to be different. The location of the timestamp varies for each
175object file, so there's no real way to work around this mis-feature.
176
177Odds are your compiler is fine, but there's no way to be certain.
178
179If you use GAS on HPs, then you will not run into this problem because
180GAS never inserts timestamps into object files. For this and various other
181reasons we highly recommend using GAS on HPs.
182
183
184Bootstrap loops rebuilding cc1 over and over
185When building egcs, the build process loops rebuilding cc1 over and
186over again. This happens on mips-sgi-irix5.2, and possibly other platforms.
187
188This is probably a bug somewhere in the egcs Makefile. Until we find and
189fix this bug we recommend you use GNU make instead of vendor supplied make
190programs.
191
192
193Dynamic linker is unable to find GCC libraries
194This problem manifests itself by programs not finding shared libraries
195they depend on when the programs are started. Note this problem often manifests
196itself with failures in the libio/libstdc++ tests after configuring with
197--enable-shared and building egcs.
198
199GCC does not specify a runpath so that the dynamic linker can find dynamic
200libraries at runtime.
201
202The short explaination is that if you always pass a -R option to the
203linker, then your programs become dependent on directories which
204may be NFS mounted, and programs may hang unnecessarily when an
205NFS server goes down.
206
207The problem is not programs that do require the directories; those
208programs are going to hang no matter what you do. The problem is
209programs that do not require the directories.
210
211SunOS effectively always passed a -R option for every -L option;
212this was a bad idea, and so it was removed for Solaris. We should
213not recreate it.
214
215
216Unable to run the testsuite
217If you get a message about unable to find "standard.exp" when trying to
218run the egcs testsuites, then your dejagnu is too old to run the egcs tests.
219You will need to get a newer version of dejagnu; we've made a
220<a href="ftp://ftp.cygnus.com/pub/egcs/infrastructure/dejagnu-971028.tar.gz">
221dejagnu snapshot available until a new version of dejagnu can be released.
222
223
224How to build a cross compiler
225 Building cross compilers is a rather complex undertaking because they
226usually need additional software (cross assembler, cross linker, target
227libraries, target include files, etc).
228
229 We recommend reading the <a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
230crossgcc FAQ for information about building cross compilers.
231
232 If you have all the pieces available, then `make cross' should build a
233cross compiler. `make LANGUAGES="c c++" install'will install the cross
234compiler.
235
236 Note that if you're trying to build a cross compiler in a tree which
237includes binutils-2.8 in addition to egcs, then you're going to need to
238make a couple minor tweaks so that the cross assembler, linker and
239nm utilities will be found.
240
241binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs gcc
242looks for them using gas-new, ld-new and nm-new, so you may have to arrange
243for any symlinks which point to &ltfile&gt.new to be changed to &ltfile&gt-new.
244
245
246Snapshots, how, when, why
247 We make snapshots of the egcs sources about once a week; there is no
248predetermined schedule. These snapshots are intended to give everyone
249access to work in progress. Any given snapshot may generate incorrect code
250or even fail to build.
251
252If you plan on downloading and using snapshots, we highly recommend you
253subscribe to the egcs mailing lists. See <a href="index.html#mailinglists">
254mailing lists on the main egcs page for instructions on how to subscribe.
255
256When using the diff files to update from older snapshots to newer snapshots,
257make sure to use "-E" and "-p" arguments to patch so that empty files are
258deleted and full pathnames are provided to patch. If your version of
259patch does not support "-E", you'll need to get a newer version. Also note
260that you may need autoconf, autoheader and various other programs if you use
261diff files to update from one snapshot to the next.
262
263
264How to install both egcs and gcc2
265It may be desirable to install both egcs and gcc2 on the same system. This
266can be done by using different prefix paths at configure time and a few
267symlinks.
268
269Basically, configure the two compilers with different --prefix options,
270then build and install each compiler. Assume you want "gcc" to be the egcs
271compiler and available in /usr/local/bin; also assume that you want "gcc2"
272to be the gcc2 compiler and also available in /usr/local/bin.
273
274The easiest way to do this is to configure egcs with --prefix=/usr/local/egcs
275and gcc2 with --prefix=/usr/local/gcc2. Build and install both compilers.
276Then make a symlink from /usr/local/bin/gcc to /usr/local/egcs/bin/gcc and
277from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
278for the "g++", "c++" and "g77" compiler drivers.
279
280
281Problems building Linux kernels
282If you installed a recent binutils/gas snapshot on your Linux system,
283you may not be able to build the kernel because objdump does not understand
284the "-k" switch. The solution for this problem is to remove /usr/bin/encaps.
285
286You may get an internal compiler error compiling process.c in newer
287versions of the Linux kernel on x86 machines. This is a bug in an asm
288statement in process.c, not a bug in egcs. XXX How to fix?!?
289
290You may get errors with the X driver of the form
291_X11TransSocketUNIXConnect: Can't connect: errno = 111
292
293It's a kernel bug. The function sys_iopl in arch/i386/kernel/process.c
294does an illegal hack which used to work but is now broken since GCC optimizes
295more aggressively . The newer 2.1.x kernels already have a fix which should
296also work in 2.0.32.
297
298
299Virtual memory exhausted error
300 This error means your system ran out of memory; this can happen for large
301files, particularly when optimizing. If you're getting this error you should
302consider trying to simplify your files or reducing the optimization level.
303
304Note that using -pedantic or -Wreturn-type can cause an explosion in the
305amount of memory needed for template-heavy C++ code, such as code that uses
306STL. Also note that -Wall includes -Wreturn-type, so if you use -Wall you
307will need to specify -Wno-return-type to turn it off.
308
309
310GCC can not find GAS
311Some configurations like irix4, irix5, hpux* require the use of the GNU
312assembler intead of the system assembler. To ensure that egcs finds the GNU
313assembler, you should configure the GNU assembler with the same --prefix
314option as you used for egcs. Then build & install the GNU assembler.
315
316
317egcs does not work on Red Hat 5.0
318 egcs does not currently work with Red Hat 5.0; we'll update this
319entry with more information as it becomes available.
320
321
322Last modified: December 2, 1997
This page took 0.391154 seconds and 5 git commands to generate.