Programming in C: Getting To Know Your Compiler (GCC)
Programming in C: Getting To Know Your Compiler (GCC)
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Distributed by the Free Software Foundation under the GNU GPL (General Public License)
Free as in Freedom
Many people credit GCC with the massive participation in OpenSource projects world wide!
Programming in C
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
What you already know gcc <codefile> -o <outputfile> What happens if gcc <codefile>
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Depends on
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
C Standard #include <stdio.h> int main() { for(int i = 0; i < 10; i++) printf("%d\n", i); return 0; }
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Programming in C
int main() { int i; for(i = 0; i < 10; i++) printf("%d\n", i); return 0; }
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
C Standard: C99
C:\temp>gcc test.c std=c99
#include <stdio.h>
C:\temp>a.exe 1 2 3 4 5 6 7 8 9
Programming in C
-std
-std=c89
ISO C89 (same as ansi) ISO C99 Default standard: ISO C89 plus GNU extensions (has some C99 features) ISO C99 plus GNU extensions
Programming in C
-std=c99
-std=gnu89 -std:gnu99
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Warning Suppression #import <stdio.h> int main() { printf("Hey, Buddy!\n"); return 0; C:\temp>gcc test.c } test.c:1:2: warning: #import is a deprecated GCC
extension
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Warning Suppression #import <stdio.h> int main() { printf("Hey, Buddy!\n"); return 0; C:\temp>gcc test.c w }
C:\temp>
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Warning Suppression #import <stdio.h> int main() { printf("Hey, Buddy!\n"); Works in SOME compilers return 0; C:\temp>gcc test.c Wno-import }
C:\temp>
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Warning Suppression #import <stdio.h> int main() { printf("Hey, Buddy!\n"); Works in SOME compilers return 0; C:\temp>gcc test.c Wno-depreciate }
C:\temp>
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
0 = FALSE 1 = TRUE
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
(1) Use Integers in place of bool (2) Use the <stdbool.h> header
Requires C99 standard Technically the same as (1), but a little more crafty!
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
The Boolean Controversy #include <stdio.h> int main () { bool b = (10 == 10); printf("The answer is %d\n", b); return 0; }
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
The Boolean Controversy #include <stdio.h> int main () { bool b = (10 == 10); printf("The answer is %d\n", b); return 0; }
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
test.c: In function 'main': test.c:5:2: error: 'bool' undeclared (first use in this function) test.c:5:2: note: each undeclared identifier is reported only once for each function it appears in test.c:5:7: error: expected ';' before 'b' test.c:6:31: error: 'b' undeclared (first use in this function)
Programming in C
The Boolean Controversy #include <stdio.h> int main () { int b = (10 == 10); printf("The answer is %d\n", b); return 0; }
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
The Boolean Controversy #include <stdio.h> #include <stdbool.h> int main () { bool b = (10 == 10); printf("The answer is %d\n", b); return 0; }
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Programming in C
GCC Options
-o
Specify output filename Suppress all warnings Compile and assemble, but do not link
-w
-c
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Linking
Compiling multiple code files separately and
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
.c or .cc
C C++ Objective C
.m or .mm
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
-x <Language>
c c-header cpp-output c++ c++-header c++-cpp-output objective-c objective-c-header objective-c-cpp-output assembler assembler-with-cpp ada java
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Other C Options
--help
--version
-ffreestanding
Free Standing Environment: Standard library may not exist and the program launch may not be in the main(). Found most frequently in OS Kernels
Programming in C
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Help!!!!
gcc --help
Usage: gcc [options] file... Options: -pass-exit-codes Exit with highest error code from a phase --help Display this information --target-help Display target specific command line options --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...] Display specific types of command line options (Use '-v --help' to display command line options of sub-processes) --version Display compiler version information -dumpspecs Display all of the built in spec strings -dumpversion Display the version of the compiler -dumpmachine Display the compiler's target processor -print-search-dirs Display the directories in the compiler's search path -print-libgcc-file-name Display the name of the compiler's companion library -print-file-name=<lib> Display the full path to library <lib> -print-prog-name=<prog> Display the full path to compiler component <prog> -print-multi-directory Display the root directory for versions of libgcc -print-multi-lib Display the mapping between command line options and multiple library search directories -print-multi-os-directory Display the relative path to OS libraries -print-sysroot Display the target libraries directory -print-sysroot-headers-suffix Display the sysroot suffix used to find headers -Wa,<options> Pass comma-separated <options> on to the assembler -Wp,<options> Pass comma-separated <options> on to the preprocessor -Wl,<options> Pass comma-separated <options> on to the linker -Xassembler <arg> Pass <arg> on to the assembler -Xpreprocessor <arg> Pass <arg> on to the preprocessor -Xlinker <arg> Pass <arg> on to the linker -combine Pass multiple source files to compiler at once -save-temps Do not delete intermediate files -save-temps=<arg> Do not delete intermediate files -no-canonical-prefixes Do not canonicalize paths when building relative prefixes to other gcc components -pipe Use pipes rather than intermediate files -time Time the execution of each subprocess -specs=<file> Override built-in specs with the contents of <file> -std=<standard> Assume that the input sources are for <standard> --sysroot=<directory> Use <directory> as the root directory for headers and libraries -B <directory> Add <directory> to the compiler's search paths -b <machine> Run gcc for target <machine>, if installed -V <version> Run gcc version number <version>, if installed -v Display the programs invoked by the compiler -### Like -v but options quoted and commands not executed -E Preprocess only; do not compile, assemble or link -S Compile only; do not assemble or link -c Compile and assemble, but do not link -o <file> Place the output into <file> -x <language> Specify the language of the following input files Permissible languages include: c c++ assembler none 'none' means revert to the default behavior of guessing the language based on the file's extension Options starting with -g, -f, -m, -O, -W, or --param are automatically passed on to the various sub-processes invoked by gcc. In order to pass other options on to these processes the -W<letter> options must be used. For bug reporting instructions, please see: <http://gcc.gnu.org/bugs.html>.
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
procedures and MAKE files Be aware that compilation, in many cases, can be more complex than what we discuss in this video series Be familiar with them and know how and where to get help Always be helpful to those that have questions!
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
http://www.megasolutions.net/c/What-is-the-purpose-of-the--Wno-deprecate-option-43613.aspx
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
http://www.megasolutions.net/c/What-is-the-purpose-of-the--Wno-deprecate-option-43613.aspx
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net
Programming in C
Programming in C
The End
Thanks for watching!
Copyright BlueSignet LLC. All rights reserved. For more visit WiBit.Net