Re: G++ for CygWin
ok ok, I simplified the explanation a bit, remember it was in brackets at the bottom of a mail describing the solution to the questioner's problem. (I have no idea how technical the questioner is, and he'd have to be pretty technical to understand your explanation ;-) ) I don't know whether it was just cygwin that separated the packages or whether that's how gcc is recommended to be distributed now, but they *are* separate packages now. (in the cygwin world that I'm a part of, and the questioner is a part of) And I'm not saying they are independent of one another, obviously g++ depends on the core gcc package. Regards - Q-Games, Dylan Cuthbert. http://www.q-games.com "Dave Korn" wrote in message news:[EMAIL PROTECTED] > > > > -Original Message- > > From: cygwin-owner On Behalf Of Dylan Cuthbert > --- explanation snipped --- > > Here endeth the lesson on the internal structure of gcc and compiler > terminology. Hope it was at least mildly interesting. > > > > cheers, > DaveK > -- > Can't think of a witty .sigline today > > > [*] Actually, I've oversimplified here, just a little. The compiler > infrastructure calls the frontend to generate a tree; it then converts that > tree to a second internal representation known as RTL; that RTL is then > passed to the backend which generates sequences of assembler instructions > corresponding to it. > > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Re: G++ for CygWin
I read these two threads out of order. Sorry for the previous rant in "Re: Lost g++ after update". On Wed, 28 Jan 2004, Gerrit P. Haase wrote: > E.g.: > If you want to install g++ you'll need the package `gcc-g++`, this pulls > automatically the backend package which is currently named `gcc' (may be > changed to `gcc-core') and the according MinGW packages. Similar with > `gcc-java' and the others. > I strongly vote *for* the name change if you can figure out how to do it without messing too much up. > Eventually I will add the installation of `gcc-g++' as an requirement to > the basic GCC installation since in previous releases it was one larger > package which includes gcj, g++, g77 and gcc and the actual compilers > and headers and the users are still used to get g++ automatically with > this one huge package. Since I included also the frontends for Ada, > ObjC and Pascal, the package would be really large and we already had > lots of complaints about the size of the old gcc package (mainly since > java was included), so it was separated. > Yeah! I'm glad you are still considering a fix. -- Brian Ford Senior Realtime Software Engineer VITAL - Visual Simulation Systems FlightSafety International Phone: 314-551-8460 Fax: 314-551-8444 -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
RE: G++ for CygWin
> -Original Message- > From: cygwin-owner On Behalf Of Gerrit P. Haase > Hello Dave, Hiya! > > Your use of "frontend" to describe the generic compiler > drivers, and > > "backend" to describe the actual language-specific compilers > > themselves is at odds with the standard usage everywhere on > > gcc.gnu.org, related mailing lists, and throughout the gcc > documentation. > > I didn't use the word 'stand-alone'. Well, you didn't, but you implied that frontends and backends were things that could be installed and distributed separately from each other. And there's no coherent definition of those two words that makes that possible. Read on: > There is a common > backend, and several language specific front ends. Yeh? What files in the gcc-core distribution would you claim implement this "common backend" ? In what way are these files used by (e.g.) the java or c++ frontends ? I don't think you could provide a meaningful answer to this question. You are speaking as if you think that the different language compilers do a bit of parsing and then hand off some intermediate result to some executable that comes with your core distro. That simply doesn't happen. In fact, the same 'backend' is repeatedly included in *every* different language compiler. > > I thought I'd explained why I say that clearly enough in my last > > post, but I guess it needs clarifying: it is a misuse of existing > > terminology that will cause confusion if continued. > > I use the terms that are also used at the GCC website? > > "Currently the main GCC distribution contains front ends for C (gcc), > C++ (g++), Objective C, Fortran (g77), Java (GCJ), and Ada (GNAT)." > > from: > http://gcc.gnu.org/frontends.html Well, it seems that they've been using the word with both meanings themselves! But if you look at the gcc internals documentation: http://gcc.gnu.org/onlinedocs/gccint/ you see that it refers to frontends as the things that deal with the language and parse it, and backends as the things that convert the language-agnostic representation to a specific architecture. > Backend describes architectures supported by GCC: > http://gcc.gnu.org/backends.html Given that definition, how on earth could you distribute "an architecture supported by gcc" ? I'd like to see you build a distribution that contained only a backend! You said: > These smaller packages are gcc-core which includes the backend and the > C-frontend and the other small packages include the other frontends. > Cygwin GCC comes in addition to these packages with a pascal frontend. That statement is simply not coherent, even under your alternative definition of frontends and backends. -- with your definition, where "frontend" == "the driver program such as gcc.exe or g++.exe" and backend == "the actual compiler", you'd be saying that gcc-core contains gcc.exe and cc1.exe, and that (for example) the g++ package contained only g++.exe but not cc1plus.exe. That wouldn't be any use! -- or if you define "frontend" == "the driver program such as gcc.exe or g++.exe" and backend == "the architecture supported by gcc", you'd be saying that the g++ package you offer doesn't support any architecture. That's not true: it contains an executable called cc1plus.exe that accepts C++ input and generates i686-pc-cygwin output. -- with the standard definitions, you'd be saying that you were distributing cc1.exe broken into two parts, and the other packages contained e.g. part of cc1plus.exe. -- either way, there's no such thing as "the" backend. Your G++ package contains a driver (g++.exe) and a compiler (cc1plus.exe), which in turn is composed of a frontend and a backend. If you want to call the driver the frontend, and the compiler the backend, then you must concede that your other small packages contain *both* frontends and backends. -- you could be using "frontend" to refer to the combination of driver-plus-compiler, which would make sense of your description of the g++ package as containing the C++ frontend, but then that doesn't leave *anything at all* left over to be referred to as the backend! I accept that the frontends page at the gcc website is imprecise and blurs the definitions, but I'd still like to see you write two simple definitions of "frontend" and "backend" that make your paragraph meaningful; I don't think there could be any. cheers, DaveK -- Can't think of a witty .sigline today -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Re: G++ for CygWin
Hello Dave, >> These smaller packages are gcc-core which includes the >> backend and the C-frontend and the other small packages >> include the other frontends. > There is no such thing as a stand-alone backend. The C-frontend and the > C-backend are inseparably combined in the program called "cc1.exe". >> Cygwin GCC comes in addition to these packages with a pascal frontend. > There is no such thing as a stand-alone frontend. The pascal frontend and > the pascal backend are inseparably combined in the program called > "gpc1.exe". > Your use of "frontend" to describe the generic compiler drivers, and > "backend" to describe the actual language-specific compilers themselves is > at odds with the standard usage everywhere on gcc.gnu.org, related mailing > lists, and throughout the gcc documentation. I didn't use the word 'stand-alone'. There is a common backend, and several language specific front ends. > I thought I'd explained why I say that clearly enough in my last post, but > I guess it needs clarifying: it is a misuse of existing terminology that > will cause confusion if continued. I use the terms that are also used at the GCC website? "Currently the main GCC distribution contains front ends for C (gcc), C++ (g++), Objective C, Fortran (g77), Java (GCJ), and Ada (GNAT)." from: http://gcc.gnu.org/frontends.html Backend describes architectures supported by GCC: http://gcc.gnu.org/backends.html -- =^..^= http://nyckelpiga.de/donate.html -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
RE: G++ for CygWin
> -Original Message- > From: cygwin-owner On Behalf Of Gerrit P. Haase > There are always sveral packages at the download mirrors > where you fetch the GCC source, one which includes all and > several smaller packages. I know that already. > These smaller packages are gcc-core which includes the > backend and the C-frontend and the other small packages > include the other frontends. There is no such thing as a stand-alone backend. The C-frontend and the C-backend are inseparably combined in the program called "cc1.exe". > Cygwin GCC comes in addition to these packages with a pascal frontend. There is no such thing as a stand-alone frontend. The pascal frontend and the pascal backend are inseparably combined in the program called "gpc1.exe". Your use of "frontend" to describe the generic compiler drivers, and "backend" to describe the actual language-specific compilers themselves is at odds with the standard usage everywhere on gcc.gnu.org, related mailing lists, and throughout the gcc documentation. I thought I'd explained why I say that clearly enough in my last post, but I guess it needs clarifying: it is a misuse of existing terminology that will cause confusion if continued. > E.g.: > If you want to install g++ you'll need the package `gcc-g++`, > this pulls automatically the backend package which is > currently named `gcc' It's *not* a backend. >(may be changed to `gcc-core') "Core" would be a perfectly good way to describe it. "Backend" is a perfectly bad way to describe it. Ask on the gcc list if you don't trust my opinion. They'll tell you the same. Or just do a websearch on the gcc.gnu.org site and see how the terms are used. Or even try "info gccint" on your own cygwin install. You may feel I'm just being pedantic, but I think it would be a bad idea to 'overload' these terms for no good reason when there are better ways to describe what you're referring to. cheers, DaveK -- Can't think of a witty .sigline today -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Re: G++ for CygWin
At 05:14 AM 1/28/2004, Gerrit P. Haase wrote: Eventually I will add the installation of `gcc-g++' as an requirement to the basic GCC installation A minority report, but I appreciate the option whether to install g++. I normally install g++, gcj only for testing. I go through the list and turn off mingw every time, because it breaks profiling, so there's another optional package which I'm happy to avoid. Tim Prince -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Re: G++ for CygWin
Dave wrote: >> -Original Message- >> From: cygwin-owner On Behalf Of Dylan Cuthbert >> (gnu separated out its frontend from its backend with v3.3) > Not quite sure what you're getting at here. I can't see anything in the > architecture of v3.3 that's changed from how it's always been done, or > anything that could be described as having been separated into frontend and > backend; nor could I find anything at the gcc website in the release > announcement for 3.3 that I could understand as meaning what you say there. There are always sveral packages at the download mirrors where you fetch the GCC source, one which includes all and several smaller packages. These smaller packages are gcc-core which includes the backend and the C-frontend and the other small packages include the other frontends. Cygwin GCC comes in addition to these packages with a pascal frontend. E.g.: If you want to install g++ you'll need the package `gcc-g++`, this pulls automatically the backend package which is currently named `gcc' (may be changed to `gcc-core') and the according MinGW packages. Similar with `gcc-java' and the others. Eventually I will add the installation of `gcc-g++' as an requirement to the basic GCC installation since in previous releases it was one larger package which includes gcj, g++, g77 and gcc and the actual compilers and headers and the users are still used to get g++ automatically with this one huge package. Since I included also the frontends for Ada, ObjC and Pascal, the package would be really large and we already had lots of complaints about the size of the old gcc package (mainly since java was included), so it was separated. Gerrit -- =^..^= http://nyckelpiga.de/donate.html -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
RE: G++ for CygWin
> > (gnu separated out its frontend from its backend with v3.3) > > AFAIR, the only significant difference between gcc.exe and g++.exe is > that > gcc.exe assumes files are C by default, and hence calls out to the cc1.exe > compiler, whereas g++ assumes programs are C++ by default, and so calls > out > to cc1plus.exe. Oh, and g++ also adds a few directories to the default > includes search path, and adds -lstdc++ to the linker line. > > This is more-or-less the same thing that happens when you use the -x > language option: "gcc.exe -xc++ " amounts to almost the > same > thing as "g++.exe ", and similarly "g++.exe -xc options>" is almost the same as "gcc.exe ". > I'd like to point out here that if your compiling c++ files, use g++. A common problem is people who are used to being able to use gcc and just add -lstdc++ to the link, which worked successfully back with gcc2. It doesn't always work with gcc3 - hence just use g++, it is simpler and you don't have to worry about the details, now - or in the future. Its also worth noting that gcc doesn't assume files are c by default, gcc makes a guess based on the file extension. But again, the guess mode isn't always the same as using the -x option. (although it probably should be the same, some of the internals don't actually understand the -x options and use file extension guess work exclusively) Gareth -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
RE: G++ for CygWin
> -Original Message- > From: cygwin-owner On Behalf Of Dylan Cuthbert > (gnu separated out its frontend from its backend with v3.3) Not quite sure what you're getting at here. I can't see anything in the architecture of v3.3 that's changed from how it's always been done, or anything that could be described as having been separated into frontend and backend; nor could I find anything at the gcc website in the release announcement for 3.3 that I could understand as meaning what you say there. For reasons I'll explain later, I think you're probably misusing the terms front- and back-end. gcc.exe and g++.exe have always been around (or at least, for quite a long time, waaay back into v2 days at the very least); they're driver programs which merely parse command line options and call out and pass parameters and filenames down to the actual compiler, assembler and linker programs. AFAIR, the only significant difference between gcc.exe and g++.exe is that gcc.exe assumes files are C by default, and hence calls out to the cc1.exe compiler, whereas g++ assumes programs are C++ by default, and so calls out to cc1plus.exe. Oh, and g++ also adds a few directories to the default includes search path, and adds -lstdc++ to the linker line. This is more-or-less the same thing that happens when you use the -x language option: "gcc.exe -xc++ " amounts to almost the same thing as "g++.exe ", and similarly "g++.exe -xc " is almost the same as "gcc.exe ". If you want to see for yourself, use the "-v" option to gcc or g++, which causes them to output the command lines they're using to call the subprograms with. I just gave it a quick test, and the only difference I could see is that the -x language option doesn't alter whether libstdc++ is linked in or not: i.e. "gcc.exe -xc++" doesn't automatically add -lstdc++ like g++.exe does, and "g++.exe -xc" still adds -lstdc++ to the link despite calling the c rather than c++ compiler. This may actually be a minor bug or it may be as intended; I don't know whether the -x option is meant to be exactly equivalent to using gcc or g++. It's probably better to refer to them as 'compiler drivers' and the actual compiler programs themselves - cc1.exe and cc1plus.exe, which live in /lib/gcc-lib/// as 'compilers' or 'compiler subprograms'. The terms 'frontend' and 'backend' already have a technical meaning in gcc jargon; the frontend is the language-specific part of the compiler, that knows how to parse C or java or fortran or whatever, and converts it into a language-agnostic intermediate representation (known as a tree); the backend is the target-specific part that knows how to convert the tree into suitable assembler output for a given target machine[*]. These front- and back-ends have *not* been separated out; cc1.exe, for example, combines the c-specific frontend and the i686-pc-cygwin backend into one executable. It takes C as input and gives assembler as output, combining frontend and backend into one inseparable unit. Cc1plus.exe combines the C++-specific frontend and the same backend; jc1.exe combines the java-specific frontend with the same backend. Here endeth the lesson on the internal structure of gcc and compiler terminology. Hope it was at least mildly interesting. cheers, DaveK -- Can't think of a witty .sigline today [*] Actually, I've oversimplified here, just a little. The compiler infrastructure calls the frontend to generate a tree; it then converts that tree to a second internal representation known as RTL; that RTL is then passed to the backend which generates sequences of assembler instructions corresponding to it. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Re: G++ for CygWin
Pinhas wrote: > I re-installed cygwin recently. In /usr/bin I have gcc but don't have g++. > How can I install it. If there is a .tar.bz2 that does not require > re-installation of cygwin, I prefer it. There are several gcc packages, the backend and c-frontend is in `gcc', the other frontends are in `gcc-g++', `gcc-ada', `gcc-g77', `gcc-objc', `gcc-java' and `gcc-pascal'. Run setup.exe to install additional packages, GCC is in the category 'devel'. HTH, Gerrit -- =^..^= http://nyckelpiga.de/donate.html -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Re: G++ for CygWin
You don't need to reintall cygwin, just run the setup program again (which is a package manager) and select the G++ package in the developer group. (gnu separated out its frontend from its backend with v3.3) There are lots of messages in this newsgroup that also tell you this exact same info, I suggest looking first ;-) -- - Q-Games, Dylan Cuthbert. http://www.q-games.com "Pinhas Krengel" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > I re-installed cygwin recently. In /usr/bin I have gcc but don't have g++. > How can I install it. If there is a .tar.bz2 that does not require > re-installation of cygwin, I prefer it. > Thanks, > Pinhas > > > > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/