GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

Embed Size (px)

Citation preview

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    1/12

    TABLE OF CONTENTS (HIDE)

    1. GCC (GNU Compiler Collection

    1.1 A Brief History and Introducti

    1.2 Installing GCC

    1. Getting !tarted

    1." GCC Compilation #rocess

    1.$ Headers (.h)% !tatic &i'raries (

    1. GCC n*ironment +aria'les

    1., Utilities for -amining te Co

    2. GNU 0ae

    2.1 /irst 0aefile By -ample

    2.2 0ore on 0aefile

    2. A !ample 0aefile

    2." Brief !ummary

    yet another insignificant programming notes... | HOME

    GCC and MakeCompiling, Linking andBuildingCC!! "pplications

    1. GCC (GNU Compiler Collection)

    1.1 A Brief History and Introduction to CC

    e original GNU C Compiler  (GCC) is de*eloped 'y 3icard !tallman% te founder of te GNU Project . 3icard !tallman

    founded te GNU pro4ect in 156" to create a complete Uni-7lie operating system as free soft8are% to promote freedom

    and cooperation among computer users and programmers.

    GCC% formerly for 9GNU C Compiler 9% as gro8n o*er times to support many languages suc as C::% ;'4ecti*e7C% >gcc.gnu.org> .

    GCC is a ey component of 9GNU Toolchain9% for de*eloping applications% as 8ell as operating systems. e GNU oolcainincludes=

    GNU Compiler Collection (GCC)= a compiler suit tat supports many languages% suc as C>C::% ;'4ecti*e7C and

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    2/12

    0inG@ (0inimalist GNU for @indo8s) is a port of te GNU Compiler Collection (GCC) and GNU Binutils for use in

    @indo8s. It also included 0!! (0inimal !ystem)% 8ic is 'asically a Bourne sell (bash).

    Cy#&in CC

    Cyg8in is a Uni-7lie en*ironment and command7line interface for 0icrosoft @indo8s. Cyg8in is uge and includes most

    of te Uni- tools and utilities. It also included te commonly7used Bas sell.

    8o *ersions of GCC are installed% identified *ia gcc‐3.exe  and gcc‐4.exe   (and g++‐3.exe  and g++‐4.exe). It also

    pro*ides symlins gcc.exe and g++.exe% 8ic are lined to gcc‐4.exe and g++‐4.exe% respecti*ely.

    'ersions

    ou could display te *ersion of GCC *ia ‐‐version option=

    // Cygwin in bash shell

    $ gcc ‐‐version

    gcc (GCC) 4.5.3

     

    $ gcc‐3 ‐‐version

    gcc‐3 (GCC) 3.4.4 (cygming special g!c ".# %sing !m! ".#5)

     

    // &inG' in C& shell gcc ‐‐version

    gcc (GCC) 4.*.

     

    g++ ‐‐version

    gcc (GCC) 4.*.

    0ore details can 'e o'tained *ia ‐v option% for e-ample%

    gcc ‐v

    sing b%il,‐in specs.

    C-C01GCC2gcc

    C-C010-1'2!6/mingw/bin/../libexec/gcc/mingw3/4.*./l,o‐wrapper.exe

    0arge,6 mingw3

    Con7ig%re! wi,h6 ../gcc‐4.*./con7ig%re ‐‐enable‐lang%ages2cc++a!a7or,ranob8cob8‐c++

    ‐‐!isable‐s8l8‐excep,ions ‐‐wi,h‐!war7 ‐‐enable‐share! ‐‐enable‐libgomp

    ‐‐!isable‐win3‐regis,ry ‐‐enable‐libs,!cxx‐!eb%g ‐‐enable‐version‐speci7ic‐r%n,ime‐libs

    ‐‐b%il!2mingw3 ‐‐pre7ix2/mingw

    0hrea! mo!el6 win3

    gcc version 4.*. (GCC)

    He"

    ou can get te elp manual *ia te ‐‐help option. /or e-ample%

    gcc ‐‐help

    $an a#es

    ou can read te GCC manual pages (or man pages) *ia te man utility=

    man gcc

    // or

    man g++

    // ress space 9ey 7or nex, page or :;: ,o ;%i,.

    3eading man pages under C0? or Bas sell can 'e difficult. ou could generate a te-t file *ia=

    man gcc | col ‐b > gcc.txt

    e col utility is needed to strip te 'acspace. (/or Cyg8in% it is a*aila'le in 9Utils9% 9util7linu-9 pacage.)

    Alternati*ely% you could loo for an online man pages% e.g.% ttp=>>linu-.die.net>man>1>gcc.

    /or 0inG@% te GCC man pages are ept in 9share

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    3/12

    1.* ettin# Started

    e GNU C and C:: compiler are gcc and g++% respecti*ely.

    Co+i"e,Lin- a Si+"e C ro#ra+ hello.c

    Belo8 is te Hello78orld C program hello.c=

    #

    3

    4

    5

    *

    =

    // hello.c>incl%!e ?s,!io.h

     

    in, main() @

      prin,7(ABello worl!

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    4/12

      // Compile an! lin9 so%rce hello.cpp in,o exec%,able hello.exe

    hello

      // xec%,e %n!er C& shell

    $ ./hello

      // xec%,e %n!er ash or o%rne shell speci7ying ,he c%rren, pa,h (./)

    $ore CC Co+i"er Otions

    A fe8 commonly7used GCC compiler options are=

    $ g++ ‐Wall ‐g ‐o Hello.exe Bello.cpp

    ‐o= specifies te output e-ecuta'le filename.

    ‐'all= prints 9all9 8arning messages.

    ‐g= generates additional sym'olic de'uggging information for use 8it g!b de'ugger.

    Co+i"e and Lin- Searate"y

    e a'o*e command compile  te source file into o'4ect file and lin9  8it oter o'4ect files (system li'rary) into

    e-ecuta'le in one step. ou may separate compile and lin in t8o steps as follo8s=

    // Compile‐only wi,h ‐c op,ion

    g++ ‐c ‐'all ‐g Bello.cpp

    // in9 ob8ec, 7ile(s) in,o an exec%,able

    g++ ‐g ‐o Bello.exe Bello.o

    e options are=

    ‐c= compile into o'4ect file 9Bello.o9. By default% te o'4ect file as te same name as te source file 8it e-tension

    of 9.o9 (tere is no need to specify ‐o option). No lining 8it oter o'4ect file or li'rary.

    &ining is performed 8en te input file are o'4ect files 9.o9 (instead of source file 9.cpp9 or 9.c9). GCC uses a

    separate liner program (called l!.exe) to perform te lining.

    Co+i"e and Lin- $u"ti"e Source Fi"es

    !uppose tat your program as t8o source files= 7ile#.cpp% 7ile.cpp. ou could compile all of tem in a single

    command=

    g++ ‐o myprog.exe 7ile#.cpp 7ile.cpp

    Ho8e*er% 8e usually compile eac of te source files separately into o'4ect file% and lin tem togeter in te later stage.

    In tis case% canges in one file does not reEuire re7compilation of te oter files.

    g++ ‐c 7ile#.cpp

    g++ ‐c 7ile.cpp

    g++ ‐o myprog.exe 7ile#.o 7ile.o

    Co+i"e into a S0ared Lirary

    o compile and lin C>C:: program into a sared li'rary (A.!llA   in @indo8s% A.soA  in Uni-es)% use ‐share!  option.

    3ead 9

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    5/12

    GCC compiles a C>C:: program into e-ecuta'le in " steps as so8n in te a'o*e diagram. /or e-ample% a 9gcc ‐o

    hello.exe hello.c9 is carried out as follo8s=

    #re7processing= *ia te GNU C #reprocessor (cpp.exe)% 8ic includes te eaders (>incl%!e) and e-pands te

    macros (>!e7ine).

    cpp hello.c > hello.i

    e resultant intermediate file 9hello.i9 contains te e-panded source code.

    1.

    Compilation= e compiler compiles te pre7processed source code into assem'ly code for a specific processor.

    gcc ‐S hello.i

    e ‐F option specifies to produce assem'ly code% instead of o'4ect code. e resultant assem'ly file is 9hello.s9.

    2.

    Assem'ly= e assem'ler (as.exe) con*erts te assem'ly code into macine code in te o'4ect file 9hello.o9.

    as ‐o hello.o hello.s

    .

    &iner= /inally% te liner (l!.exe) lins te o'4ect code 8it te li'rary code to produce an e-ecuta'le file

    9hello.exe9.

    ld ‐o hello.exe hello.o ...libraries...

    ".

    'erose $ode (‐v )

    ou can see te detailed compilation process 'y ena'ling ‐v (*er'ose) option. /or e-ample%

    gcc ‐v hello.c ‐o hello.exe

    Definin# $acro (‐D)

    ou can use te ‐name option to define a macro% or ‐name2value to define a macro 8it a *alue. e value sould

    'e enclosed in dou'le Euotes if it contains spaces.

    1.3 Headers (.h)4 Static Liraries (.lib4 .a) and S0ared Lirary (.dll4 .so)

    Static Lirary 5s. S0ared Lirary

    A li'rary is a collection of pre7compiled o'4ect files tat can 'e lined into your programs *ia te liner. -amples are te

    system functions suc as prin,7() and s;r,().

    ere are t8o types of e-ternal li'raries= static library  and shared library .A static li'rary as file e-tension of 9.a9 (arci*e file) in Uni-es or 9.lib9 (li'rary) in @indo8s. @en your program is

    lined against a static li'rary% te macine code of e-ternal functions used in your program is copied into te

    e-ecuta'le. A static li'rary can 'e created *ia te archive program 9ar.exe9.

    1.

    A sared li'rary as file e-tension of 9.so9 (sared o'4ects) in Uni-es or 9.!ll9 (dynamic lin li'rary) in @indo8s.

    @en your program is lined against a sared li'rary% only a small ta'le is created in te e-ecuta'le. Before te

    e-ecuta'le starts running% te operating system loads te macine code needed for te e-ternal functions 7 a

    process no8n as dynamic linking. ?ynamic lining maes e-ecuta'le files smaller and sa*es dis space% 'ecause one

    copy of a li'rary can 'e sared 'et8een multiple programs. /urtermore% most operating systems allo8s one copy of 

    a sared li'rary in memory to 'e used 'y all running programs% tus% sa*ing memory. e sared li'rary codes can

    'e upgraded 8itout te need to recompile your program.

    2.

    Because of te ad*antage of dynamic lining% GCC% 'y default% lins to te sared li'rary if it is a*aila'le.

    ou can list te contents of a li'rary *ia 9nm  filename9.

    Searc0in# for Header Fi"es and Liraries (‐I4 ‐ and ‐l)

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

    12 09/09/2014 9.37

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    6/12

    @en compiling te program% te compiler  needs te header files to compile te source codesD te linker  needs te libraries

    to resol*e e-ternal references from oter o'4ect files or li'raries. e compiler and liner 8ill not find te eaders>li'raries

    unless you set te appropriate options% 8ic is not o'*ious for first7time user.

    /or eac of te eaders used in your source (*ia >incl%!e  directi*es)% te compiler searces te so7called include-paths

    for tese eaders. e include7pats are specified *ia ‐Idir  option (or en*ironment *aria'le C0B). !ince te eaderFs

    filename is no8n (e.g.% ios,ream.h% s,!io.h)% te compiler only needs te directories.

    e liner searces te so7called library-paths for li'raries needed to lin te program into an e-ecuta'le. e li'rary7pat

    is specified *ia ‐dir option (uppercase :: follo8ed 'y te directory pat) (or en*ironment *aria'le IJ10B). In

    addition% you also a*e to specify te li'rary name. In Uni-es% te li'rary lib xxx .a   is specified *ia ‐l xxx  option

    (lo8ercase letter :l:% 8itout te prefi- 9lib9 and A.a9 e-tension). In @indo8s% pro*ide te full name suc as

    ‐lxxx.lib. e liner needs to no8 'ot te directories as 8ell as te li'rary names. Hence% t8o options need to 'e

    specified.

    Defau"t Inc"udeat0s4 Liraryat0s and Liraries

    ry list te default include7pats in your system used 'y te 9GNU C #reprocessor9 *ia 9cpp ‐v9=

    cpp ‐v

    ......

    >incl%!e A...A search s,ar,s here6>incl%!e ?... search s,ar,s here6

     !6C:: General ⇒ #ats and !ym'ols ⇒ Under ta's 9Includes9% 9&i'rary #ats9 and 9&i'raries9. e settings

    are applica'le to te selected pro4ect only.

    1.7 CC En5iron+ent 'aria"es

    GCC uses te follo8ing en*ironment *aria'les=

    0B= /or searcing te e-ecuta'les and run7time sared li'raries (.!ll% .so).

    C0B= /or searcing te include-paths   for eaders. It is searced after pats specified in ‐I?dir   options.

    C1IKC10B  and CF1IKC10B  can 'e used to specify C and C:: eaders if te particular language

    8as indicated in pre7processing.

    IJ10B= /or searcing library-paths for lin li'raries. It is searced after pats specified in 7?dir options.

    1.8 9ti"ities for E:a+inin# t0e Co+i"ed Fi"es

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

    12 09/09/2014 9.37

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    7/12

    /or all te GNU utilities% you can use 9comman! ‐‐help9 to list te elp menuD or 9man comman!9 to display te man

    pages.

    ;!ile; 9ti"ity Deter+ine Fi"e Tye

    e utility 97ile9 can 'e used to display te type of o'4ect files and e-ecuta'le files. /or e-ample%

    gcc ‐c hello.c

    gcc ‐o hello.exe hello.o

      !ile hello.o

    hello.o6 H"3H* C-LL exec%,able no, s,rippe! ‐ version 3"H#

     

    !ile hello.exe

    hello.exe6 3 exec%,able (console) In,el H"3H* 7or &F 'in!ows

    ;nm; 9ti"ity List Sy+o" Ta"e of Oincl%!e ?s,!io.h

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

    12 09/09/2014 9.37

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    8/12

    3

    4

    5

    *

    =

     

    in, main() @

      prin,7(ABello worl!

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    9/12

    !.! $ore on $a-efi"e

    Co++ent = Continuation

    A comment 'egins 8it a > and lasts till te end of te line. &ong line can 'e 'roen and continued in se*eral lines *ia a

    'ac7slas (u"esA general synta- for te rules is=

    target1 Otarget2 ...P6 O pre‐req‐1  pre‐req‐2 ...P

    Ocommand1

     command2

     ......P

    e rules are usually organied in suc as 8ay te more general rules come first. e o*erall rule is often name 9 all9%

    8ic is te default target for ma9e.

    0ony Tar#ets (or Artificia" Tar#ets)

    A target tat does not represent a file is called a pony target. /or e-ample% te 9clean9 in te a'o*e e-ample% 8ic is 4ust a la'el for a command. If te target is a file% it 8ill 'e ceced against its pre7reEuisite for out7of7date7ness. #ony

    target is al8ays out7of7date and its command 8ill 'e run. e standard pony targets are= all% clean% ins,all.

    'aria"es

    A *aria'le 'egins 8it a $ and is enclosed 8itin parenteses (...) or 'races @...E. !ingle caracter *aria'les do not

    need te parenteses. /or e-ample% $(CC)% $(CC1LGF)% $Q% $R.

    Auto+atic 'aria"es

    Automatic *aria'les are set 'y mae after a rule is matced. ere include=

    $Q= te target filename.

    $S= te target filename 8itout te file e-tension.

    $?= te first prereEuisite filename.

    $R= te filenames of all te prereEuisites% separated 'y spaces% discard duplicates.

    $+= similar to $R% 'ut includes duplicates.

    $T= te names of all prereEuisites tat are ne8er tan te target% separated 'y spaces.

    /or e-ample% 8e can re8rite te earlier maefile as=

    all6 hello.exe

     

    > $Q ma,ches ,he ,arge,D $? ma,ches ,he 7irs, !epen!en,hello.exe6 hello.o

    gcc ‐o $Q $?

    hello.o6 hello.c

    gcc ‐c $?

     

    clean6

    rm hello.o hello.exe

    'irtua" at0 #$%&H = vpath

    ou can use U0B (uppercase) to specify te directory to searc for dependencies and target files. /or e-ample%

    > Fearch 7or !epen!encies an! ,arge,s 7rom AsrcA an! Aincl%!eA !irec,ories

    > 0he !irec,ories are separa,e! by space

    U0B 2 src incl%!e

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

    12 09/09/2014 9.37

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    10/12

    ou can also use vpa,h (lo8ercase) to 'e more precise a'out te file type and its searc directory. /or e-ample%

    > Fearch 7or .c 7iles in AsrcA !irec,oryD .h 7iles in Aincl%!eA !irec,ory

    > 0he pa,,ern ma,ching charac,er :V: ma,ches 7ilename wi,ho%, ,he ex,ension

    vpa,h V.c src

    vpa,h V.h incl%!e

    attern >u"es

    A pattern rule% 8ic uses pattern matcing caracter :V: as te filename% can 'e applied to create a target% if tere is no

    e-plicit rule. /or e-ample%

    > pplicable 7or crea,e .o ob8ec, 7ile.

    > :V: ma,ches 7ilename.

    > $? is ,he 7irs, pre‐re;%isi,e

    > $(C-&I.c) consis,s o7 compiler name an! compiler op,ions

    > $(-001-0I-KF) co%l! be ‐o $Q

    V.o6 V.c

    $(C-&I.c) $(-001-0I-K) $?

     

    > pplicable 7or crea,e exec%,able (wi,ho%, ex,ension) 7rom ob8ec, .o ob8ec, 7ile

    > $R ma,ches all ,he pre‐re;%isi,es (no !%plica,es)

    V6 V.o$(IKM.o) $R $(-IF) $(IF) ‐o $Q

    I+"icit attern >u"es

    0ae comes 8it a uge set of implicit pattern rules. ou can list all te rule *ia ‐‐prin,‐!a,a‐base option.

    !.* A Sa+"e $a-efi"e

    is sample maefile is e-tracted from clipseFs 9C>C:: ?e*elopment Guide 70aefile9.

    > sample &a9e7ile

    > 0his &a9e7ile !emons,ra,es an! explains> &a9e &acros &acro xpansions

    > %les 0arge,s epen!encies Comman!s Goals

    > r,i7icial 0arge,s a,,ern %le epen!ency %le.

    > Commen,s s,ar, wi,h a > an! go ,o ,he en! o7 ,he line.

    > Bere is a simple &a9e &acro.

    IKM10G0 2 ,es,1me.exe

    > Bere is a &a9e &acro ,ha, %ses ,he bac9slash ,o ex,en! ,o m%l,iple lines.

    -WF 2 <

     0es,#.o <

     0es,.o <

     &ain.o

    > Bere is a &a9e &acro !e7ine! by ,wo &acro xpansions.

    > &acro xpansion may be ,rea,e! as a ,ex,%al replacemen, o7 ,he &a9e &acro.

    > &acro xpansions are in,ro!%ce! wi,h $ an! enclose! in (paren,heses).

    IF 2 $(-WF) $(IKM10G0)

    > Bere is a simple %le (%se! 7or AcleaningA yo%r b%il! environmen,).

    > I, has a 0arge, name! AcleanA (le7, o7 ,he colon A6A on ,he 7irs, line)

    > no epen!encies (righ, o7 ,he colon)

    > an! ,wo Comman!s (in!en,e! by ,abs on ,he lines ,ha, 7ollow).

    > 0he space be7ore ,he colon is no, re;%ire! b%, a!!e! here 7or clari,y.

    clean 6

    rm ‐7 $(IF)  echo Clean !one

    > 0here are ,wo s,an!ar! 0arge,s yo%r &a9e7ile sho%l! probably have6

    > AallA an! AcleanA beca%se ,hey are o7,en comman!‐line Goals.

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

    di 12 09/09/2014 9.37

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    11/12

    > lso ,hese are bo,h ,ypically r,i7icial 0arge,s beca%se ,hey !on:, ,ypically

    > correspon! ,o real 7iles name! AallA or AcleanA. 

    > 0he r%le 7or AallA is %se! ,o incremen,ally b%il! yo%r sys,em.

    > I, !oes ,his by expressing a !epen!ency on ,he res%l,s o7 ,ha, sys,em

    > which in ,%rn have ,heir own r%les an! !epen!encies.

    all 6 $(IKM10G0)

      echo ll !one

    > 0here is no re;%ire! or!er ,o ,he lis, o7 r%les as ,hey appear in ,he &a9e7ile.

    > &a9e will b%il! i,s own !epen!ency ,ree an! only exec%,e each r%le only once

    > i,s !epen!encies: r%les have been exec%,e! s%ccess7%lly.

    > Bere is a %le ,ha, %ses some b%il,‐in &a9e &acros in i,s comman!6

    > $Q expan!s ,o ,he r%le:s ,arge, in ,his case A,es,1me.exeA.

    > $R expan!s ,o ,he r%le:s !epen!encies in ,his case ,he ,hree 7iles

    > main.o ,es,#.o an! ,es,.o.

    $(IKM10G0) 6 $(-WF)

      g++ ‐g ‐o $Q $R

    > Bere is a a,,ern %le o7,en %se! 7or compile‐line.

    > I, says how ,o crea,e a 7ile wi,h a .o s%77ix given a 7ile wi,h a .cpp s%77ix.

    > 0he r%le:s comman! %ses some b%il,‐in &a9e &acros6

    > $Q 7or ,he pa,,ern‐ma,che! ,arge,> $? 7or ,he pa,,ern‐ma,che! !epen!ency

    V.o 6 V.cpp

      g++ ‐g ‐o $Q ‐c $?

    > 0hese are epen!ency %les which are r%les wi,ho%, any comman!.

    > epen!ency %les in!ica,e ,ha, i7 any 7ile ,o ,he righ, o7 ,he colon changes

    > ,he ,arge, ,o ,he le7, o7 ,he colon sho%l! be consi!ere! o%,‐o7‐!a,e.

    > 0he comman!s 7or ma9ing an o%,‐o7‐!a,e ,arge, %p‐,o‐!a,e may be 7o%n! elsewhere

    > (in ,his case by ,he a,,ern %le above).

    > epen!ency %les are o7,en %se! ,o cap,%re hea!er 7ile !epen!encies.

    &ain.o 6 &ain.h 0es,#.h 0es,.h

    0es,#.o 6 0es,#.h 0es,.h

    0es,.o 6 0es,.h

    > l,erna,ively ,o man%ally cap,%ring !epen!encies several a%,oma,e!

    > !epen!ency genera,ors exis,. Bere is one possibili,y (commen,e! o%,)...

    > V.!ep 6 V.cpp

    > g++ ‐& $(LGF) $? $Q

    > incl%!e $(-WF6.o2.!ep)

    !.2 Brief Su++ary

    I a*e presented te 'asic mae features ere so tat you can read and understand simple maefiles for 'uilding C>C::

    applications. 0ae is actually Euite comple-% and can 'e considered as a programming language 'y itself

    >EFE>ENCES = >ESO9>CES

    GCC 0anual 9Using te GNU Compiler Collection (GCC)9 ttp=>>gcc.gnu.org>onlinedocs.1.

    GNU FmaeF manual ttp=>>888.gnu.org>soft8are>mae>manual>mae.tml.2.

    3o'ert 0eclen'urg% 90anaging #ro4ects 8it GNU 0ae9% rd dition% 2"..

    Latest #ersion tested$ Cyg%inMinG% GCC &.'.(

    Last modified$ "pril, ()*+

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

    di 12 09/09/2014 9.37

  • 8/18/2019 GCC and Make - A Tutorial on how to compile, link and build C_C++ applications

    12/12

    eed-ack, comments, corrections, and errata can -e sent to Chua HockChuan /ehchua0ntu.edu.sg1 | HOME

    C and Make - A Tutorial on how to compile, link and build C/C++ a... https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html