|
|
1.1.1.5 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input 1.1 root 2: file gcc.texi. 3: 4: This file documents the use and the internals of the GNU compiler. 5: 1.1.1.5 ! root 6: Published by the Free Software Foundation 675 Massachusetts Avenue ! 7: Cambridge, MA 02139 USA ! 8: ! 9: Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc. 1.1 root 10: 1.1.1.3 root 11: Permission is granted to make and distribute verbatim copies of this 12: manual provided the copyright notice and this permission notice are 13: preserved on all copies. 1.1 root 14: 15: Permission is granted to copy and distribute modified versions of 16: this manual under the conditions for verbatim copying, provided also 1.1.1.4 root 17: that the sections entitled "GNU General Public License" and "Protect 18: Your Freedom--Fight `Look And Feel'" are included exactly as in the 19: original, and provided that the entire resulting derived work is 20: distributed under the terms of a permission notice identical to this 21: one. 1.1 root 22: 23: Permission is granted to copy and distribute translations of this 24: manual into another language, under the above conditions for modified 1.1.1.3 root 25: versions, except that the sections entitled "GNU General Public 1.1.1.4 root 26: License" and "Protect Your Freedom--Fight `Look And Feel'", and this 27: permission notice, may be included in translations approved by the Free 28: Software Foundation instead of in the original English. 1.1 root 29: 30: 31: File: gcc.info, Node: Top, Next: Copying, Up: (DIR) 32: 33: Introduction 34: ************ 35: 1.1.1.5 ! root 36: This manual documents how to run, install and port the GNU compiler, ! 37: as well as its new features and incompatibilities, and how to report ! 38: bugs. It corresponds to GNU CC version 2.4. 1.1 root 39: 40: * Menu: 41: 42: * Copying:: GNU General Public License says 43: how you can copy and share GNU CC. 44: * Contributors:: People who have contributed to GNU CC. 45: * Boycott:: Protect your freedom--fight "look and feel". 1.1.1.5 ! root 46: ! 47: * G++ and GCC:: You can compile C or C++ programs. 1.1.1.3 root 48: * Invoking GCC:: Command options supported by `gcc'. 1.1 root 49: * Installation:: How to configure, compile and install GNU CC. 1.1.1.5 ! root 50: * C Extensions:: GNU extensions to the C language family. ! 51: * C++ Extensions:: GNU extensions to the C++ language. 1.1 root 52: * Trouble:: If you have trouble installing GNU CC. 1.1.1.3 root 53: * Bugs:: How, why and where to report bugs. 1.1 root 54: * Service:: How to find suppliers of support for GNU CC. 55: * VMS:: Using GNU CC on VMS. 1.1.1.5 ! root 56: 1.1 root 57: * Portability:: Goals of GNU CC's portability features. 58: * Interface:: Function-call interface of GNU CC output. 59: * Passes:: Order of passes, what they do, and what each file is for. 60: * RTL:: The intermediate representation that most passes work on. 61: * Machine Desc:: How to write machine description instruction patterns. 1.1.1.2 root 62: * Target Macros:: How to write the machine description C macros. 1.1 root 63: * Config:: Writing the `xm-MACHINE.h' file. 1.1.1.5 ! root 64: 1.1 root 65: * Index:: Index of concepts and symbol names. 66: 67: 68: File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top 69: 70: GNU GENERAL PUBLIC LICENSE 71: ************************** 72: 1.1.1.3 root 73: Version 2, June 1991 1.1 root 74: 75: Copyright (C) 1989, 1991 Free Software Foundation, Inc. 76: 675 Mass Ave, Cambridge, MA 02139, USA 77: 78: Everyone is permitted to copy and distribute verbatim copies 79: of this license document, but changing it is not allowed. 80: 81: Preamble 82: ======== 83: 84: The licenses for most software are designed to take away your 85: freedom to share and change it. By contrast, the GNU General Public 86: License is intended to guarantee your freedom to share and change free 87: software--to make sure the software is free for all its users. This 88: General Public License applies to most of the Free Software 89: Foundation's software and to any other program whose authors commit to 90: using it. (Some other Free Software Foundation software is covered by 91: the GNU Library General Public License instead.) You can apply it to 92: your programs, too. 93: 94: When we speak of free software, we are referring to freedom, not 95: price. Our General Public Licenses are designed to make sure that you 96: have the freedom to distribute copies of free software (and charge for 97: this service if you wish), that you receive source code or can get it 1.1.1.3 root 98: if you want it, that you can change the software or use pieces of it in 99: new free programs; and that you know you can do these things. 1.1 root 100: 101: To protect your rights, we need to make restrictions that forbid 1.1.1.3 root 102: anyone to deny you these rights or to ask you to surrender the rights. 1.1 root 103: These restrictions translate to certain responsibilities for you if you 104: distribute copies of the software, or if you modify it. 105: 106: For example, if you distribute copies of such a program, whether 107: gratis or for a fee, you must give the recipients all the rights that 108: you have. You must make sure that they, too, receive or can get the 109: source code. And you must show them these terms so they know their 110: rights. 111: 112: We protect your rights with two steps: (1) copyright the software, 1.1.1.3 root 113: and (2) offer you this license which gives you legal permission to copy, 114: distribute and/or modify the software. 1.1 root 115: 116: Also, for each author's protection and ours, we want to make certain 117: that everyone understands that there is no warranty for this free 1.1.1.3 root 118: software. If the software is modified by someone else and passed on, we 119: want its recipients to know that what they have is not the original, so 120: that any problems introduced by others will not reflect on the original 121: authors' reputations. 1.1 root 122: 123: Finally, any free program is threatened constantly by software 124: patents. We wish to avoid the danger that redistributors of a free 125: program will individually obtain patent licenses, in effect making the 126: program proprietary. To prevent this, we have made it clear that any 127: patent must be licensed for everyone's free use or not licensed at all. 128: 129: The precise terms and conditions for copying, distribution and 130: modification follow. 131: 1.1.1.3 root 132: TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 1.1 root 133: 1.1.1.5 ! root 134: 0. This License applies to any program or other work which contains a 1.1.1.3 root 135: notice placed by the copyright holder saying it may be distributed 136: under the terms of this General Public License. The "Program", 137: below, refers to any such program or work, and a "work based on 138: the Program" means either the Program or any derivative work under 139: copyright law: that is to say, a work containing the Program or a 140: portion of it, either verbatim or with modifications and/or 141: translated into another language. (Hereinafter, translation is 142: included without limitation in the term "modification".) Each 143: licensee is addressed as "you". 144: 145: Activities other than copying, distribution and modification are 146: not covered by this License; they are outside its scope. The act 147: of running the Program is not restricted, and the output from the 148: Program is covered only if its contents constitute a work based on 149: the Program (independent of having been made by running the 1.1.1.5 ! root 150: Program). Whether that is true depends on what the Program does. 1.1 root 151: 1.1.1.5 ! root 152: 1. You may copy and distribute verbatim copies of the Program's 1.1 root 153: source code as you receive it, in any medium, provided that you 1.1.1.3 root 154: conspicuously and appropriately publish on each copy an appropriate 155: copyright notice and disclaimer of warranty; keep intact all the 156: notices that refer to this License and to the absence of any 157: warranty; and give any other recipients of the Program a copy of 158: this License along with the Program. 159: 160: You may charge a fee for the physical act of transferring a copy, 161: and you may at your option offer warranty protection in exchange 162: for a fee. 1.1 root 163: 1.1.1.5 ! root 164: 2. You may modify your copy or copies of the Program or any portion 1.1 root 165: of it, thus forming a work based on the Program, and copy and 166: distribute such modifications or work under the terms of Section 1 167: above, provided that you also meet all of these conditions: 168: 169: a. You must cause the modified files to carry prominent notices 1.1.1.3 root 170: stating that you changed the files and the date of any change. 1.1 root 171: 172: b. You must cause any work that you distribute or publish, that 173: in whole or in part contains or is derived from the Program 174: or any part thereof, to be licensed as a whole at no charge 175: to all third parties under the terms of this License. 176: 177: c. If the modified program normally reads commands interactively 178: when run, you must cause it, when started running for such 1.1.1.3 root 179: interactive use in the most ordinary way, to print or display 180: an announcement including an appropriate copyright notice and 181: a notice that there is no warranty (or else, saying that you 182: provide a warranty) and that users may redistribute the 183: program under these conditions, and telling the user how to 184: view a copy of this License. (Exception: if the Program 185: itself is interactive but does not normally print such an 186: announcement, your work based on the Program is not required 187: to print an announcement.) 1.1 root 188: 1.1.1.3 root 189: These requirements apply to the modified work as a whole. If 1.1 root 190: identifiable sections of that work are not derived from the 1.1.1.3 root 191: Program, and can be reasonably considered independent and separate 192: works in themselves, then this License, and its terms, do not 193: apply to those sections when you distribute them as separate 194: works. But when you distribute the same sections as part of a 195: whole which is a work based on the Program, the distribution of 196: the whole must be on the terms of this License, whose permissions 197: for other licensees extend to the entire whole, and thus to each 198: and every part regardless of who wrote it. 1.1 root 199: 1.1.1.3 root 200: Thus, it is not the intent of this section to claim rights or 1.1 root 201: contest your rights to work written entirely by you; rather, the 202: intent is to exercise the right to control the distribution of 203: derivative or collective works based on the Program. 204: 1.1.1.3 root 205: In addition, mere aggregation of another work not based on the 1.1 root 206: Program with the Program (or with a work based on the Program) on 207: a volume of a storage or distribution medium does not bring the 208: other work under the scope of this License. 209: 1.1.1.5 ! root 210: 3. You may copy and distribute the Program (or a work based on it, 1.1.1.3 root 211: under Section 2) in object code or executable form under the terms 212: of Sections 1 and 2 above provided that you also do one of the 213: following: 1.1 root 214: 215: a. Accompany it with the complete corresponding machine-readable 216: source code, which must be distributed under the terms of 217: Sections 1 and 2 above on a medium customarily used for 218: software interchange; or, 219: 220: b. Accompany it with a written offer, valid for at least three 1.1.1.3 root 221: years, to give any third party, for a charge no more than your 222: cost of physically performing source distribution, a complete 223: machine-readable copy of the corresponding source code, to be 224: distributed under the terms of Sections 1 and 2 above on a 225: medium customarily used for software interchange; or, 226: 227: c. Accompany it with the information you received as to the offer 228: to distribute corresponding source code. (This alternative is 229: allowed only for noncommercial distribution and only if you 230: received the program in object code or executable form with 231: such an offer, in accord with Subsection b above.) 232: 233: The source code for a work means the preferred form of the work for 234: making modifications to it. For an executable work, complete 235: source code means all the source code for all modules it contains, 236: plus any associated interface definition files, plus the scripts 1.1.1.5 ! root 237: used to control compilation and installation of the executable. 1.1.1.3 root 238: However, as a special exception, the source code distributed need 239: not include anything that is normally distributed (in either 240: source or binary form) with the major components (compiler, 241: kernel, and so on) of the operating system on which the executable 242: runs, unless that component itself accompanies the executable. 243: 244: If distribution of executable or object code is made by offering 245: access to copy from a designated place, then offering equivalent 246: access to copy the source code from the same place counts as 247: distribution of the source code, even though third parties are not 248: compelled to copy the source along with the object code. 1.1 root 249: 1.1.1.5 ! root 250: 4. You may not copy, modify, sublicense, or distribute the Program 1.1 root 251: except as expressly provided under this License. Any attempt 252: otherwise to copy, modify, sublicense or distribute the Program is 253: void, and will automatically terminate your rights under this 1.1.1.5 ! root 254: License. However, parties who have received copies, or rights, 1.1 root 255: from you under this License will not have their licenses 256: terminated so long as such parties remain in full compliance. 257: 1.1.1.5 ! root 258: 5. You are not required to accept this License, since you have not 1.1 root 259: signed it. However, nothing else grants you permission to modify 260: or distribute the Program or its derivative works. These actions 1.1.1.5 ! root 261: are prohibited by law if you do not accept this License. 1.1 root 262: Therefore, by modifying or distributing the Program (or any work 263: based on the Program), you indicate your acceptance of this 264: License to do so, and all its terms and conditions for copying, 265: distributing or modifying the Program or works based on it. 266: 1.1.1.5 ! root 267: 6. Each time you redistribute the Program (or any work based on the 1.1 root 268: Program), the recipient automatically receives a license from the 269: original licensor to copy, distribute or modify the Program 270: subject to these terms and conditions. You may not impose any 271: further restrictions on the recipients' exercise of the rights 1.1.1.5 ! root 272: granted herein. You are not responsible for enforcing compliance 1.1 root 273: by third parties to this License. 274: 1.1.1.5 ! root 275: 7. If, as a consequence of a court judgment or allegation of patent 1.1 root 276: infringement or for any other reason (not limited to patent 277: issues), conditions are imposed on you (whether by court order, 278: agreement or otherwise) that contradict the conditions of this 279: License, they do not excuse you from the conditions of this 1.1.1.3 root 280: License. If you cannot distribute so as to satisfy simultaneously 281: your obligations under this License and any other pertinent 282: obligations, then as a consequence you may not distribute the 283: Program at all. For example, if a patent license would not permit 284: royalty-free redistribution of the Program by all those who 285: receive copies directly or indirectly through you, then the only 286: way you could satisfy both it and this License would be to refrain 287: entirely from distribution of the Program. 288: 289: If any portion of this section is held invalid or unenforceable 290: under any particular circumstance, the balance of the section is 291: intended to apply and the section as a whole is intended to apply 292: in other circumstances. 293: 294: It is not the purpose of this section to induce you to infringe any 295: patents or other property right claims or to contest validity of 296: any such claims; this section has the sole purpose of protecting 297: the integrity of the free software distribution system, which is 298: implemented by public license practices. Many people have made 299: generous contributions to the wide range of software distributed 300: through that system in reliance on consistent application of that 301: system; it is up to the author/donor to decide if he or she is 302: willing to distribute software through any other system and a 303: licensee cannot impose that choice. 1.1 root 304: 1.1.1.3 root 305: This section is intended to make thoroughly clear what is believed 306: to be a consequence of the rest of this License. 1.1 root 307: 1.1.1.5 ! root 308: 8. If the distribution and/or use of the Program is restricted in 1.1 root 309: certain countries either by patents or by copyrighted interfaces, 310: the original copyright holder who places the Program under this 311: License may add an explicit geographical distribution limitation 312: excluding those countries, so that distribution is permitted only 313: in or among countries not thus excluded. In such case, this 314: License incorporates the limitation as if written in the body of 315: this License. 316: 1.1.1.5 ! root 317: 9. The Free Software Foundation may publish revised and/or new 1.1 root 318: versions of the General Public License from time to time. Such 1.1.1.3 root 319: new versions will be similar in spirit to the present version, but 320: may differ in detail to address new problems or concerns. 1.1 root 321: 1.1.1.3 root 322: Each version is given a distinguishing version number. If the 1.1 root 323: Program specifies a version number of this License which applies 324: to it and "any later version", you have the option of following 325: the terms and conditions either of that version or of any later 1.1.1.3 root 326: version published by the Free Software Foundation. If the Program 327: does not specify a version number of this License, you may choose 328: any version ever published by the Free Software Foundation. 1.1 root 329: 1.1.1.5 ! root 330: 10. If you wish to incorporate parts of the Program into other free 1.1.1.3 root 331: programs whose distribution conditions are different, write to the 332: author to ask for permission. For software which is copyrighted 333: by the Free Software Foundation, write to the Free Software 334: Foundation; we sometimes make exceptions for this. Our decision 335: will be guided by the two goals of preserving the free status of 336: all derivatives of our free software and of promoting the sharing 337: and reuse of software generally. 1.1 root 338: 1.1.1.3 root 339: NO WARRANTY 1.1 root 340: 1.1.1.5 ! root 341: 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO 1.1 root 342: WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE 343: LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 344: HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT 345: WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT 346: NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 347: FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 348: QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 349: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY 350: SERVICING, REPAIR OR CORRECTION. 351: 1.1.1.5 ! root 352: 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 1.1 root 353: WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY 354: MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE 355: LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 356: INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 1.1.1.3 root 357: INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 358: DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU 359: OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY 360: OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN 1.1 root 361: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 362: 1.1.1.3 root 363: END OF TERMS AND CONDITIONS 1.1 root 364: 1.1.1.4 root 365: How to Apply These Terms to Your New Programs 366: ============================================= 1.1 root 367: 368: If you develop a new program, and you want it to be of the greatest 369: possible use to the public, the best way to achieve this is to make it 370: free software which everyone can redistribute and change under these 371: terms. 372: 373: To do so, attach the following notices to the program. It is safest 374: to attach them to the start of each source file to most effectively 375: convey the exclusion of warranty; and each file should have at least 376: the "copyright" line and a pointer to where the full notice is found. 377: 1.1.1.5 ! root 378: ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. 1.1 root 379: Copyright (C) 19YY NAME OF AUTHOR 380: 1.1.1.5 ! root 381: This program is free software; you can redistribute it and/or modify ! 382: it under the terms of the GNU General Public License as published by ! 383: the Free Software Foundation; either version 2 of the License, or ! 384: (at your option) any later version. 1.1 root 385: 386: This program is distributed in the hope that it will be useful, 387: but WITHOUT ANY WARRANTY; without even the implied warranty of 388: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 389: GNU General Public License for more details. 390: 391: You should have received a copy of the GNU General Public License 392: along with this program; if not, write to the Free Software 393: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 394: 395: Also add information on how to contact you by electronic and paper 396: mail. 397: 398: If the program is interactive, make it output a short notice like 399: this when it starts in an interactive mode: 400: 401: Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR 1.1.1.4 root 402: Gnomovision comes with ABSOLUTELY NO WARRANTY; for details 1.1.1.5 ! root 403: type `show w'. ! 404: This is free software, and you are welcome to redistribute it ! 405: under certain conditions; type `show c' for details. 1.1 root 406: 407: The hypothetical commands `show w' and `show c' should show the 408: appropriate parts of the General Public License. Of course, the 409: commands you use may be called something other than `show w' and `show 410: c'; they could even be mouse-clicks or menu items--whatever suits your 411: program. 412: 413: You should also get your employer (if you work as a programmer) or 414: your school, if any, to sign a "copyright disclaimer" for the program, 415: if necessary. Here is a sample; alter the names: 416: 1.1.1.5 ! root 417: Yoyodyne, Inc., hereby disclaims all copyright interest in the program ! 418: `Gnomovision' (which makes passes at compilers) written by James Hacker. 1.1 root 419: 420: SIGNATURE OF TY COON, 1 April 1989 421: Ty Coon, President of Vice 422: 423: This General Public License does not permit incorporating your 424: program into proprietary programs. If your program is a subroutine 425: library, you may consider it more useful to permit linking proprietary 1.1.1.3 root 426: applications with the library. If this is what you want to do, use the 427: GNU Library General Public License instead of this License. 1.1 root 428: 429: 430: File: gcc.info, Node: Contributors, Next: Boycott, Prev: Copying, Up: Top 431: 432: Contributors to GNU CC 433: ********************** 434: 435: In addition to Richard Stallman, several people have written parts 436: of GNU CC. 437: 1.1.1.3 root 438: * The idea of using RTL and some of the optimization ideas came from 439: the program PO written at the University of Arizona by Jack 1.1 root 440: Davidson and Christopher Fraser. See "Register Allocation and 441: Exhaustive Peephole Optimization", Software Practice and 442: Experience 14 (9), Sept. 1984, 857-866. 443: 444: * Paul Rubin wrote most of the preprocessor. 445: 446: * Leonard Tower wrote parts of the parser, RTL generator, and RTL 447: definitions, and of the Vax machine description. 448: 449: * Ted Lemon wrote parts of the RTL reader and printer. 450: 1.1.1.3 root 451: * Jim Wilson implemented loop strength reduction and some other loop 452: optimizations. 1.1 root 453: 454: * Nobuyuki Hikichi of Software Research Associates, Tokyo, 455: contributed the support for the Sony NEWS machine. 456: 1.1.1.3 root 457: * Charles LaBrec contributed the support for the Integrated Solutions 458: 68020 system. 1.1 root 459: 460: * Michael Tiemann of Cygnus Support wrote the front end for C++, as 461: well as the support for inline functions and instruction 462: scheduling. Also the descriptions of the National Semiconductor 1.1.1.3 root 463: 32000 series cpu, the SPARC cpu and part of the Motorola 88000 cpu. 1.1 root 464: 465: * Jan Stein of the Chalmers Computer Society provided support for 466: Genix, as well as part of the 32000 machine description. 467: 468: * Randy Smith finished the Sun FPA support. 469: 470: * Robert Brown implemented the support for Encore 32000 systems. 471: 472: * David Kashtan of SRI adapted GNU CC to the Vomit-Making System 473: (VMS). 474: 475: * Alex Crain provided changes for the 3b1. 476: 1.1.1.3 root 477: * Greg Satz and Chris Hanson assisted in making GNU CC work on HP-UX 478: for the 9000 series 300. 1.1 root 479: 480: * William Schelter did most of the work on the Intel 80386 support. 481: 482: * Christopher Smith did the port for Convex machines. 483: 484: * Paul Petersen wrote the machine description for the Alliant FX/8. 485: 486: * Alain Lichnewsky ported GNU CC to the Mips cpu. 487: 488: * Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the 489: Tahoe. 490: 491: * Jonathan Stone wrote the machine description for the Pyramid 492: computer. 493: 1.1.1.3 root 494: * Gary Miller ported GNU CC to Charles River Data Systems machines. 495: 1.1.1.4 root 496: * Richard Kenner of the New York University Ultracomputer Research 497: Laboratory wrote the machine descriptions for the AMD 29000, the 498: DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the 499: support for instruction attributes. He also made changes to 500: better support RISC processors including changes to common 501: subexpression elimination, strength reduction, function calling 502: sequence handling, and condition code support, in addition to 503: generalizing the code for frame pointer elimination. 1.1 root 504: 505: * Richard Kenner and Michael Tiemann jointly developed reorg.c, the 506: delay slot scheduler. 507: 1.1.1.3 root 508: * Mike Meissner and Tom Wood of Data General finished the port to the 509: Motorola 88000. 1.1 root 510: 511: * Masanobu Yuhara of Fujitsu Laboratories implemented the machine 512: description for the Tron architecture (specifically, the Gmicro). 513: 514: * NeXT, Inc. donated the front end that supports the Objective C 515: language. 516: 1.1.1.3 root 517: * James van Artsdalen wrote the code that makes efficient use of the 518: Intel 80387 register stack. 1.1 root 519: 1.1.1.3 root 520: * Mike Meissner at the Open Software Foundation finished the port to 521: the MIPS cpu, including adding ECOFF debug support. 1.1 root 522: 1.1.1.4 root 523: * Ron Guilmette implemented the `protoize' and `unprotoize' tools, 524: the support for Dwarf symbolic debugging information, and much of 525: the support for System V Release 4. He has also worked heavily on 526: the Intel 386 and 860 support. 1.1 root 527: 1.1.1.2 root 528: * Torbjorn Granlund of the Swedish Institute of Computer Science 529: implemented multiply-by-constant optimization and better long long 530: support, and improved leaf function register allocation. 531: 1.1.1.4 root 532: * Mike Stump implemented the support for Elxsi 64 bit CPU. 533: 1.1.1.5 ! root 534: * John Wehle added the machine description for the Western Electric ! 535: 32000 processor used in several 3b series machines (no relation to ! 536: the National Semiconductor 32000 processor). ! 537: ! 538: * Holger Teutsch provided the support for the Clipper cpu. ! 539: ! 540: * Kresten Krab Thorup wrote the run time support for the Objective C ! 541: language. ! 542: ! 543: * Stephen Moshier contributed the floating point emulator that ! 544: assists in cross-compilation and permits support for floating ! 545: point numbers wider than 64 bits. ! 546: ! 547: * Steve Chamberlain wrote the support for the Hitachi SH processor. ! 548: 1.1 root 549: 1.1.1.5 ! root 550: File: gcc.info, Node: Boycott, Next: G++ and GCC, Prev: Contributors, Up: Top 1.1 root 551: 552: Protect Your Freedom--Fight "Look And Feel" 553: ******************************************* 554: 1.1.1.3 root 555: This section is a political message from the League for Programming 556: Freedom to the users of GNU CC. It is included here as an 557: expression of support for the League on the part of the Free 558: Software Foundation. 1.1 root 559: 1.1.1.2 root 560: Apple and Lotus are trying to create a new form of legal monopoly: a 561: copyright on a class of user interfaces. These monopolies would cause 562: serious problems for users and developers of computer software and 563: systems. Xerox, too, has tried to make a monopoly for itself on window 564: systems; their suit against Apple was thrown out on a technicality, but 565: Xerox has not said anything to indicate it wouldn't try again. 1.1 root 566: 567: Until a few years ago, the law seemed clear: no one could restrict 568: others from using a user interface; programmers were free to implement 1.1.1.3 root 569: any interface they chose. Imitating interfaces, sometimes with changes, 570: was standard practice in the computer field. The interfaces we know 571: evolved gradually in this way; for example, the Macintosh user interface 572: drew ideas from the Xerox interface, which in turn drew on work done at 573: Stanford and SRI. 1-2-3 imitated VisiCalc, and dBase imitated a 574: database program from JPL. 1.1 root 575: 576: Most computer companies, and nearly all computer users, were happy 577: with this state of affairs. The companies that are suing say it does 578: not offer "enough incentive" to develop their products, but they must 579: have considered it "enough" when they made their decision to do so. It 1.1.1.3 root 580: seems they are not satisfied with the opportunity to continue to compete 581: in the marketplace--not even with a head start. 1.1 root 582: 1.1.1.2 root 583: If companies like Xerox, Lotus, and Apple are permitted to make law 584: through the courts, the precedent will hobble the software industry: 1.1 root 585: 586: * Gratuitous incompatibilities will burden users. Imagine if each 587: car manufacturer had to arrange the pedals in a different order. 588: 589: * Software will become and remain more expensive. Users will be 590: "locked in" to proprietary interfaces, for which there is no real 591: competition. 592: 593: * Large companies have an unfair advantage wherever lawsuits become 594: commonplace. Since they can easily afford to sue, they can 595: intimidate small companies with threats even when they don't 596: really have a case. 597: 598: * User interface improvements will come slower, since incremental 599: evolution through creative imitation will no longer be permitted. 600: 1.1.1.3 root 601: * Even Apple, etc., will find it harder to make improvements if they 602: can no longer adapt the good ideas that others introduce, for fear 603: of weakening their own legal positions. Some users suggest that 604: this stagnation may already have started. 1.1 root 605: 606: * If you use GNU software, you might find it of some concern that 607: user interface copyright will make it hard for the Free Software 1.1.1.3 root 608: Foundation to develop programs compatible with the interfaces that 609: you already know. 1.1 root 610: 611: To protect our freedom from lawsuits like these, a group of 612: programmers and users have formed a new grass-roots political 613: organization, the League for Programming Freedom. 614: 615: The purpose of the League is to oppose new monopolistic practices 616: such as user-interface copyright and software patents; it calls for a 617: return to the legal policies of the recent past, in which these 618: practices were not allowed. The League is not concerned with free 619: software as an issue, and not affiliated with the Free Software 620: Foundation. 621: 622: The League's membership rolls include John McCarthy, inventor of 1.1.1.3 root 623: Lisp, Marvin Minsky, founder of the Artificial Intelligence lab, Guy L. 1.1 root 624: Steele, Jr., author of well-known books on Lisp and C, as well as 625: Richard Stallman, the developer of GNU CC. Please join and add your 626: name to the list. Membership dues in the League are $42 per year for 627: programmers, managers and professionals; $10.50 for students; $21 for 628: others. 629: 1.1.1.3 root 630: The League needs both activist members and members who only pay their 631: dues. 1.1 root 632: 1.1.1.4 root 633: To join, or for more information, phone (617) 243-4091 or write to: 1.1 root 634: 635: League for Programming Freedom 636: 1 Kendall Square #143 637: P.O. Box 9171 638: Cambridge, MA 02139 639: 640: You can also send electronic mail to `[email protected]'. 641: 642: Here are some suggestions from the League for things you can do to 643: protect your freedom to write programs: 644: 645: * Don't buy from Xerox, Lotus or Apple. Buy from their competitors 646: or from the defendants they are suing. 647: 648: * Don't develop software to work with the systems made by these 649: companies. 650: 651: * Port your existing software to competing systems, so that you 652: encourage users to switch. 653: 654: * Write letters to company presidents to let them know their conduct 655: is unacceptable. 656: 657: * Tell your friends and colleagues about this issue and how it 658: threatens to ruin the computer industry. 659: 660: * Above all, don't work for the look-and-feel plaintiffs, and don't 661: accept contracts from them. 662: 663: * Write to Congress to explain the importance of this issue. 664: 665: House Subcommittee on Intellectual Property 666: 2137 Rayburn Bldg 667: Washington, DC 20515 668: 669: Senate Subcommittee on Patents, Trademarks and Copyrights 670: United States Senate 671: Washington, DC 20510 672: 673: (These committees have received lots of mail already; let's give 674: them even more.) 675: 676: Express your opinion! You can make a difference. 677: 678: 1.1.1.5 ! root 679: File: gcc.info, Node: G++ and GCC, Next: Invoking GCC, Prev: Boycott, Up: Top ! 680: ! 681: Compile C, C++, or Objective C ! 682: ****************************** ! 683: ! 684: The C, C++, and Objective C versions of the compiler are integrated; ! 685: the GNU C compiler can compile programs written in C, C++, or Objective ! 686: C. ! 687: ! 688: "GCC" is a common shorthand term for the GNU C compiler. This is ! 689: both the most general name for the compiler, and the name used when the ! 690: emphasis is on compiling C programs. ! 691: ! 692: When referring to C++ compilation, it is usual to call the compiler ! 693: "G++". Since there is only one compiler, it is also accurate to call ! 694: it "GCC" no matter what the language context; however, the term "G++" ! 695: is more useful when the emphasis is on compiling C++ programs. ! 696: ! 697: G++ is a *compiler*, not merely a preprocessor. G++ builds object ! 698: code directly from your C++ program source. There is no intermediate C ! 699: version of the program. (By contrast, for example, some other ! 700: implementations use a program that generates a C program from your C++ ! 701: source.) Avoiding an intermediate C representation of the program means ! 702: that you get better object code, and better debugging information. The ! 703: GNU debugger, GDB, works with this information in the object code to ! 704: give you comprehensive C++ source-level editing capabilities (*note C ! 705: and C++: (gdb.info)C.). ! 706: ! 707: ! 708: File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: G++ and GCC, Up: Top 1.1 root 709: 710: GNU CC Command Options 711: ********************** 712: 713: When you invoke GNU CC, it normally does preprocessing, compilation, 714: assembly and linking. The "overall options" allow you to stop this 715: process at an intermediate stage. For example, the `-c' option says 1.1.1.3 root 716: not to run the linker. Then the output consists of object files output 717: by the assembler. 1.1 root 718: 1.1.1.3 root 719: Other options are passed on to one stage of processing. Some options 720: control the preprocessor and others the compiler itself. Yet other 721: options control the assembler and linker; most of these are not 1.1 root 722: documented here, since you rarely need to use any of them. 723: 1.1.1.5 ! root 724: Most of the command line options that you can use with GNU CC are ! 725: useful for C programs; when an option is only useful with another ! 726: language (usually C++), the explanation says so explicitly. If the ! 727: description for a particular option does not mention a source language, ! 728: you can use that option with all supported languages. ! 729: ! 730: *Note Compiling C++ Programs: Invoking G++, for a summary of special ! 731: options for compiling C++ programs. ! 732: 1.1.1.4 root 733: The `gcc' program accepts options and file names as operands. Many 734: options have multiletter names; therefore multiple single-letter options 735: may *not* be grouped: `-dr' is very different from `-d -r'. 1.1 root 736: 737: You can mix options and other arguments. For the most part, the 1.1.1.4 root 738: order you use doesn't matter. Order does matter when you use several 739: options of the same kind; for example, if you specify `-L' more than 740: once, the directories are searched in the order specified. 1.1 root 741: 742: Many options have long names starting with `-f' or with `-W'--for 1.1.1.5 ! root 743: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on. 1.1 root 744: Most of these have both positive and negative forms; the negative form 745: of `-ffoo' would be `-fno-foo'. This manual documents only one of 746: these two forms, whichever one is not the default. 747: 1.1.1.4 root 748: * Menu: 749: 750: * Option Summary:: Brief list of all options, without explanations. 751: * Overall Options:: Controlling the kind of output: 752: an executable, object files, assembler files, 753: or preprocessed source. 1.1.1.5 ! root 754: * Invoking G++:: Compiling C++ programs. ! 755: * C Dialect Options:: Controlling the variant of C language compiled. ! 756: * C++ Dialect Options:: Variations on C++. 1.1.1.4 root 757: * Warning Options:: How picky should the compiler be? 758: * Debugging Options:: Symbol tables, measurements, and debugging dumps. 759: * Optimize Options:: How much optimization? 760: * Preprocessor Options:: Controlling header files and macro definitions. 761: Also, getting dependency information for Make. 762: * Assembler Options:: Passing options to the assembler. 763: * Link Options:: Specifying libraries and so on. 764: * Directory Options:: Where to find header files and libraries. 765: Where to find the compiler executable files. 766: * Target Options:: Running a cross-compiler, or an old version of GNU CC. 767: * Submodel Options:: Specifying minor hardware or convention variations, 768: such as 68010 vs 68020. 769: * Code Gen Options:: Specifying conventions for function calls, data layout 770: and register usage. 771: * Environment Variables:: Env vars that affect GNU CC. 772: * Running Protoize:: Automatically adding or removing function prototypes. 773: 774: 775: File: gcc.info, Node: Option Summary, Next: Overall Options, Up: Invoking GCC 776: 777: Option Summary 778: ============== 779: 1.1.1.3 root 780: Here is a summary of all the options, grouped by type. Explanations 781: are in the following sections. 1.1 root 782: 783: *Overall Options* 784: *Note Options Controlling the Kind of Output: Overall Options. 785: -c -S -E -o FILE -pipe -v -x LANGUAGE 786: 1.1.1.5 ! root 787: *C Language Options* ! 788: *Note Options Controlling C Dialect: C Dialect Options. 1.1.1.4 root 789: -ansi -fcond-mismatch -fno-asm -fno-builtin 1.1 root 790: -fsigned-bitfields -fsigned-char 791: -funsigned-bitfields -funsigned-char -fwritable-strings 792: -traditional -traditional-cpp -trigraphs 1.1.1.5 ! root 793: ! 794: *C++ Language Options* ! 795: *Note Options Controlling C++ Dialect: C++ Dialect Options. ! 796: -fall-virtual -fdollars-in-identifiers ! 797: -felide-constructors -fenum-int-equiv -fmemoize-lookups ! 798: -fno-strict-prototype -fnonnull-objects ! 799: -fthis-is-variable -nostdinc++ 1.1 root 800: 801: *Warning Options* 802: *Note Options to Request or Suppress Warnings: Warning Options. 803: -fsyntax-only -pedantic -pedantic-errors 1.1.1.5 ! root 804: -w -W -Wall -Waggregate-return -Wcast-align ! 805: -Wcast-qual -Wchar-subscript -Wcomment -Wconversion ! 806: -Wenum-clash -Werror -Wformat -Wid-clash-LEN ! 807: -Wimplicit -Wimport -Winline -Wmissing-prototypes ! 808: -Wnested-externs -Woverloaded-virtual -Wparentheses ! 809: -Wpointer-arith -Wredundant-decls -Wreturn-type ! 810: -Wshadow -Wstrict-prototypes -Wswitch ! 811: -Wtemplate-debugging -Wtraditional -Wtrigraphs ! 812: -Wuninitialized -Wunused -Wwrite-strings 1.1 root 813: 814: *Debugging Options* 1.1.1.3 root 815: *Note Options for Debugging Your Program or GCC: Debugging Options. 1.1 root 816: -a -dLETTERS -fpretend-float 1.1.1.4 root 817: -g -gLEVEL -ggdb -gdwarf -gdwarf+ 1.1.1.5 ! root 818: -gstabs -gstabs+ -gcoff -gxcoff -gxcoff+ ! 819: -p -pg -save-temps -print-libgcc-file-name 1.1 root 820: 821: *Optimization Options* 822: *Note Options that Control Optimization: Optimize Options. 1.1.1.3 root 823: -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks 1.1.1.5 ! root 824: -fdelayed-branch -fexpensive-optimizations ! 825: -ffast-math -ffloat-store -fforce-addr -fforce-mem ! 826: -finline-functions -fkeep-inline-functions ! 827: -fno-default-inline -fno-defer-pop -fno-function-cse ! 828: -fno-inline -fno-peephole -fomit-frame-pointer ! 829: -frerun-cse-after-loop -fschedule-insns ! 830: -fschedule-insns2 -fstrength-reduce -fthread-jumps 1.1 root 831: -funroll-all-loops -funroll-loops 832: -O -O2 833: 834: *Preprocessor Options* 835: *Note Options Controlling the Preprocessor: Preprocessor Options. 1.1.1.4 root 836: -AASSERTION -C -dD -dM -dN 1.1 root 837: -DMACRO[=DEFN] -E -H 1.1.1.5 ! root 838: -idirafter DIR 1.1 root 839: -include FILE -imacros FILE 1.1.1.5 ! root 840: -iprefix FILE -iwithprefix DIR 1.1 root 841: -M -MD -MM -MMD -nostdinc -P -trigraphs -UMACRO 842: 1.1.1.4 root 843: *Assembler Option* 844: *Note Passing Options to the Assembler: Assembler Options. 845: -Wa,OPTION 846: 1.1 root 847: *Linker Options* 848: *Note Options for Linking: Link Options. 849: OBJECT-FILE-NAME 1.1.1.5 ! root 850: -lLIBRARY -nostartfiles -nostdlib 1.1.1.4 root 851: -static -shared -symbolic 1.1.1.5 ! root 852: -Wl,OPTION -Xlinker OPTION 1.1.1.4 root 853: -u SYMBOL 1.1 root 854: 855: *Directory Options* 856: *Note Options for Directory Search: Directory Options. 857: -BPREFIX -IDIR -I- -LDIR 858: 859: *Target Options* 1.1.1.5 ! root 860: *Note Target Options::. 1.1 root 861: -b MACHINE -V VERSION 862: 863: *Machine Dependent Options* 864: *Note Hardware Models and Configurations: Submodel Options. 865: *M680x0 Options* 1.1.1.5 ! root 866: -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 ! 867: -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield ! 868: -mrtd -mshort -msoft-float 1.1 root 869: 870: *VAX Options* 1.1.1.5 ! root 871: -mg -mgnu -munix 1.1 root 872: 873: *SPARC Options* 1.1.1.5 ! root 874: -mepilogue -mfpu -mhard-float ! 875: -mno-fpu -mno-epilogue -msoft-float ! 876: -msparclite -mv8 1.1 root 877: 878: *Convex Options* 1.1.1.5 ! root 879: -mc1 -mc2 -mc32 -mc34 -mc38 ! 880: -margcount -mnoargcount ! 881: -mlong32 -mlong64 ! 882: -mbolatile-cache -mvolatile-nocache 1.1 root 883: 884: *AMD29K Options* 1.1.1.5 ! root 885: -m29000 -m29050 -mbw -mdw -mkernel-registers ! 886: -mlarge -mnbw -mnodw -msmall -mstack-check ! 887: -muser-registers 1.1 root 888: 889: *M88K Options* 1.1.1.5 ! root 890: -m88000 -m88100 -m88110 -mbig-pic ! 891: -mcheck-zero-division -mhandle-large-shift ! 892: -midentify-revision -mno-check-zero-division ! 893: -mno-ocs-debug-info -mno-ocs-frame-position ! 894: -mno-optimize-arg-area -mno-serialize-volatile ! 895: -mno-underscores -mocs-debug-info ! 896: -mocs-frame-position -moptimize-arg-area ! 897: -mserialize-volatile -mshort-data-NUM -msvr3 ! 898: -msvr4 -mtrap-large-shift -muse-div-instruction ! 899: -mversion-03.00 -mwarn-passed-structs 1.1 root 900: 901: *RS/6000 Options* 1.1.1.5 ! root 902: -mfp-in-toc -mno-fop-in-toc 1.1 root 903: 904: *RT Options* 1.1.1.5 ! root 905: -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs ! 906: -mfull-fp-blocks -mhc-struct-return -min-line-mul ! 907: -mminimum-fp-blocks -mnohc-struct-return 1.1 root 908: 909: *MIPS Options* 1.1.1.5 ! root 910: -mcpu=CPU TYPE -mips2 -mips3 -mint64 ! 911: -mlong64 -mlonglong128 -mmips-as -mgas -mrnames ! 912: -mno-rnames -mgpopt -mno-gpopt -mstats -mno-stats ! 913: -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile ! 914: -msoft-float -mhard-float -mabicalls -mno-abicalls ! 915: -mhalf-pic -mno-half-pic -mlong-calls -mno-long-calls ! 916: -G NUM -nocpp 1.1.1.2 root 917: 918: *i386 Options* 1.1.1.5 ! root 919: -m486 -mno-486 -msoft-float -msvr3-shlib -mieee-fp 1.1.1.4 root 920: -mno-fp-ret-in-387 921: 922: *HPPA Options* 923: -mpa-risc-1-0 924: -mpa-risc-1-1 925: -mkernel 926: -mshared-libs 927: -mno-shared-libs 928: -mlong-calls 1.1.1.5 ! root 929: -mdisable-fpregs ! 930: -mdisable-indexing ! 931: -mtrailing-colon 1.1.1.4 root 932: 933: *Intel 960 Options* 934: -mCPU TYPE 1.1.1.5 ! root 935: -mnumerics -msoft-float ! 936: -mcode-align -mno-code-align ! 937: -mleaf-procedures -mno-leaf-procedures ! 938: -mtail-call -mno-tail-call ! 939: -mcomplex-addr -mno-complex-addr ! 940: -mclean-linkage -mno-clean-linkage ! 941: -mic-compat -mic2.0-compat -mic3.0-compat ! 942: -masm-compat -mintel-asm ! 943: -mstrict-align -mno-strict-align ! 944: -mold-align -mno-old-align 1.1.1.4 root 945: 946: *DEC Alpha Options* 1.1.1.5 ! root 947: -mfp-regs -mno-fp-regs -mno-soft-float ! 948: -msoft-float 1.1.1.4 root 949: 950: *System V Options* 951: -G -Qy -Qn -YP,PATHS -Ym,DIR 1.1 root 952: 953: *Code Generation Options* 954: *Note Options for Code Generation Conventions: Code Gen Options. 1.1.1.5 ! root 955: -fcall-saved-REG -fcall-used-REG ! 956: -ffixed-REG -finhibit-size-directive ! 957: -fno-common -fno-ident ! 958: -fno-gnu-linker -fpcc-struct-return -fpic -fPIC ! 959: -freg-struct-return -fshared-data -fshort-enums ! 960: -fshort-double -fvolatile -fvolatile-global 1.1.1.4 root 961: -fverbose-asm 1.1 root 962: 963: * Menu: 964: 965: * Overall Options:: Controlling the kind of output: 966: an executable, object files, assembler files, 967: or preprocessed source. 1.1.1.5 ! root 968: * C Dialect Options:: Controlling the variant of C language compiled. ! 969: * C++ Dialect Options:: Variations on C++. 1.1 root 970: * Warning Options:: How picky should the compiler be? 971: * Debugging Options:: Symbol tables, measurements, and debugging dumps. 972: * Optimize Options:: How much optimization? 973: * Preprocessor Options:: Controlling header files and macro definitions. 974: Also, getting dependency information for Make. 1.1.1.4 root 975: * Assembler Options:: Passing options to the assembler. 1.1 root 976: * Link Options:: Specifying libraries and so on. 977: * Directory Options:: Where to find header files and libraries. 978: Where to find the compiler executable files. 979: * Target Options:: Running a cross-compiler, or an old version of GNU CC. 980: 981: 1.1.1.5 ! root 982: File: gcc.info, Node: Overall Options, Next: Invoking G++, Prev: Option Summary, Up: Invoking GCC 1.1 root 983: 984: Options Controlling the Kind of Output 985: ====================================== 986: 1.1.1.3 root 987: Compilation can involve up to four stages: preprocessing, compilation 988: proper, assembly and linking, always in that order. The first three 989: stages apply to an individual source file, and end by producing an 990: object file; linking combines all the object files (those newly 991: compiled, and those specified as input) into an executable file. 1.1 root 992: 993: For any given input file, the file name suffix determines what kind 994: of compilation is done: 995: 996: `FILE.c' 997: C source code which must be preprocessed. 998: 999: `FILE.i' 1000: C source code which should not be preprocessed. 1001: 1.1.1.4 root 1002: `FILE.ii' 1003: C++ source code which should not be preprocessed. 1004: 1.1 root 1005: `FILE.m' 1.1.1.4 root 1006: Objective-C source code. Note that you must link with the library 1007: `libobjc.a' to make an Objective-C program work. 1.1 root 1008: 1009: `FILE.h' 1010: C header file (not to be compiled or linked). 1011: 1012: `FILE.cc' 1013: `FILE.cxx' 1014: `FILE.C' 1.1.1.5 ! root 1015: C++ source code which must be preprocessed. Note that in `.cxx', ! 1016: the last two letters must both be literally `x'. Likewise, `.C' ! 1017: refers to a literal capital C. 1.1 root 1018: 1019: `FILE.s' 1020: Assembler code. 1021: 1022: `FILE.S' 1023: Assembler code which must be preprocessed. 1024: 1025: `OTHER' 1.1.1.5 ! root 1026: An object file to be fed straight into linking. Any file name ! 1027: with no recognized suffix is treated this way. 1.1 root 1028: 1029: You can specify the input language explicitly with the `-x' option: 1030: 1031: `-x LANGUAGE' 1032: Specify explicitly the LANGUAGE for the following input files 1.1.1.5 ! root 1033: (rather than letting the compiler choose a default based on the ! 1034: file name suffix). This option applies to all following input ! 1035: files until the next `-x' option. Possible values for LANGUAGE ! 1036: are: ! 1037: c objective-c c++ ! 1038: c-header cpp-output c++-cpp-output ! 1039: assembler assembler-with-cpp 1.1 root 1040: 1041: `-x none' 1.1.1.3 root 1042: Turn off any specification of a language, so that subsequent files 1043: are handled according to their file name suffixes (as they are if 1044: `-x' has not been used at all). 1045: 1046: If you only want some of the stages of compilation, you can use `-x' 1047: (or filename suffixes) to tell `gcc' where to start, and one of the 1048: options `-c', `-S', or `-E' to say where `gcc' is to stop. Note that 1049: some combinations (for example, `-x cpp-output -E' instruct `gcc' to do 1050: nothing at all. 1.1 root 1051: 1052: `-c' 1.1.1.3 root 1053: Compile or assemble the source files, but do not link. The linking 1054: stage simply is not done. The ultimate output is in the form of an 1055: object file for each source file. 1.1 root 1056: 1057: By default, the object file name for a source file is made by 1058: replacing the suffix `.c', `.i', `.s', etc., with `.o'. 1059: 1060: Unrecognized input files, not requiring compilation or assembly, 1061: are ignored. 1062: 1063: `-S' 1064: Stop after the stage of compilation proper; do not assemble. The 1065: output is in the form of an assembler code file for each 1066: non-assembler input file specified. 1067: 1068: By default, the assembler file name for a source file is made by 1069: replacing the suffix `.c', `.i', etc., with `.s'. 1070: 1071: Input files that don't require compilation are ignored. 1072: 1073: `-E' 1074: Stop after the preprocessing stage; do not run the compiler 1075: proper. The output is in the form of preprocessed source code, 1076: which is sent to the standard output. 1077: 1078: Input files which don't require preprocessing are ignored. 1079: 1080: `-o FILE' 1081: Place output in file FILE. This applies regardless to whatever 1.1.1.3 root 1082: sort of output is being produced, whether it be an executable file, 1083: an object file, an assembler file or preprocessed C code. 1.1 root 1084: 1085: Since only one output file can be specified, it does not make 1086: sense to use `-o' when compiling more than one input file, unless 1087: you are producing an executable file as output. 1088: 1089: If `-o' is not specified, the default is to put an executable file 1.1.1.3 root 1090: in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o', its 1091: assembler file in `SOURCE.s', and all preprocessed C source on 1092: standard output. 1.1 root 1093: 1094: `-v' 1095: Print (on standard error output) the commands executed to run the 1096: stages of compilation. Also print the version number of the 1097: compiler driver program and of the preprocessor and the compiler 1098: proper. 1099: 1100: `-pipe' 1.1.1.3 root 1101: Use pipes rather than temporary files for communication between the 1102: various stages of compilation. This fails to work on some systems 1103: where the assembler is unable to read from a pipe; but the GNU 1104: assembler has no trouble. 1.1 root 1105:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.