2. Whatyouneed… COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 2 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
3. [COMMAND GCC] GNU COMPILER COLLECTION COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 3 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
4. [COMMAND GCC]-o option: file.cfile.exe COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 4 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
5. [COMMAND GCC]Compiles multiple sources COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 5 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX $ gcc -Wall main.chello_fn.c -o newhello $ cat hello.h void hello (const char * name);
6. [COMMAND GCC]-c option to createobjects COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 6 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX $ gcc -Wall -c main.c main.o $ gcc -Wall -c hello_fn.c hello_fn.o $ gccmain.ohello_fn.o -o hello hello.exe Linking step gcc uses the linkerld ld = a separate program.
7. [COMMAND GCC]Linkwith the libraries COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 7 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX Default library: libc.a ___ #include <math.h> #include <stdio.h> intmain (void) { double x = sqrt (2.0); printf ("The square root of 2.0 is %f", x); return 0;} ___ $ gcc -Wall calc.c -o calc /tmp/ccbR6Ojm.o: In function `main': /tmp/ccbR6Ojm.o(.text+0x19): undefinedreference to `sqrt' ___ $ gcc -Wall calc.c/usr/lib/libm.a-o calc ___ $ ./calc The square root of 2.0 is 1.414214 ___ $ gcc -Wall calc.c-lm -o calc
8. [COMMAND GCC]Linkingorder COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 8 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX $ gcc -Wall calc.c-lm -o calc (correct order) $ gcc-Wall -lm calc.c -o calc (incorrect order) main.o: In function `main': main.o(.text+0xf): undefinedreference to `sqrt'
9. [COMMAND GCC]-Wall option COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 9 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX #include <stdio.h> intmain (void) { double x = pow (2.0, 3.0); printf("Two cubed is %f", x); return 0; } ___ $ gccbadpow.c -lm $ ./a.out Two cubed is 2.851120 (incorrect result, should be 8) ___ $ gcc -Wall badpow.c -lm badpow.c: In function `main': badpow.c:6: warning: implicitdeclaration of function`pow'
19. [MAKEFILE] EXAMPLE COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 13 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
20. [MAKEFILE] RICH MAKEFILE COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 14 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
21. [MAKEFILE]MACROS FOR FLEXIBILITY COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 15 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
22. [MAKEFILE]DIRECTIVES COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 16 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX
23. [DEBUG]Working COMPILING UNDER LINUX COMMAND GCC -o option Multiples sources -c option Linking with Libraries -wall option COMMAND MAKE Functionality Working MAKEFILE Minimal makefile Example Rich makefile Macros Directives DEBUG Working Features Example 17 Pierre Masure | EMBEDDED LINUX: COMPILING UNDER LINUX gdb