Chapter 12 C Programming Tools - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Chapter 12 C Programming Tools

Description:

Chapter 12 C Programming Tools Graham Glass and King Ables, UNIX for Programmers and Users, Third Edition, Pearson Prentice Hall, 2003. Original Notes by Raj Sunderraman – PowerPoint PPT presentation

Number of Views:61
Avg rating:3.0/5.0
Slides: 18
Provided by: Michael4024
Learn more at: https://www.cs.gsu.edu
Category:

less

Transcript and Presenter's Notes

Title: Chapter 12 C Programming Tools


1
Chapter 12C Programming Tools
  • Graham Glass and King Ables,
  • UNIX for Programmers and Users,
  • Third Edition, Pearson Prentice Hall, 2003.
  • Original Notes by Raj Sunderraman
  • Converted to presentation and updated by Michael
    Weeks

2
Compiling in gcc
  • GNU C Compiler (gcc)?
  • http//www.gnu.org

gcc reverse.c produces executable in a.out
gcc -o reverse reverse.c
3
Multi-module Program
  • types.h supps.h, supps.c parts.h, parts.c sp.h,
    sp.c db.h, db.c (this has the main() function)?
  • Compile these programs separately
  • gcc -c supps.c
  • gcc -c parts.c
  • gcc -c sp.c
  • gcc -c db.c
  • These commands produce supps.o, parts.o, sp.o,
    db.o
  • gcc db.o supps.o parts.o sp.o -o db

4
Unix File-Dependency System make
  • make -f fileName
  • Makefiles consist of a list of interdependency
    rules of the form
  • targetListdependencyList
  • commandList
  • Rules must be separated by at least one line

5
Unix File-Dependency System make
  • targetList is a list of target files
  • dependencyList is a list of files on which the
    files in targetList depend on
  • commandList is a list of zero or more commands,
    separated by new lines, that reconstruct the
    target files from the dependency files
  • NOTE Each line in commandList MUST start with a
    tab

6
Example Makefile
db db.o supps.o parts.o sp.o gcc
db.o supps.o parts.o sp.o -o db db.o db.c
types.h db.h supps.h parts.h sp.h gcc -c
db.c supps.o supps.c types.h supps.h
gcc -c supps.c parts.o parts.c types.h
parts.h gcc -c parts.c sp.o sp.c
types.h sp.h gcc -c sp.c
7
Order of Make rules
  • The order of make rules is important. The make
    utility starts from the first rule and creates a
    tree with target files at the root and the
    dependency files as children.

8
Order of Make rules
  • The make utility then works up the tree
  • From the leaf nodes to the root node
  • Looking to see if the last modification time of
    each node is more recent than the last
    modification time of the immediate parent node
  • If so, the associated parent's rule is executed

9
Make Rules
  • Make Rules of the form
  • xxx.o reverse.c reverse.h
  • gcc -c xxx.c
  • where xxx varies from each rule
  • Pre-defined rule (how to make .o from .c files)
  • .c.o
  • /bin/cc -c -O lt

10
Simplifying Make Files
  • So makefile can be simplified as

db db.o supps.o parts.o sp.o gcc db.o
supps.o parts.o sp.o -o db db.o db.c types.h
db.h supps.h parts.h sp.h supps.o supps.c
types.h supps.h parts.o parts.c types.h
parts.h sp.o sp.c types.h sp.h
11
Simplifying Make Files
  • Further simplification (leave out .c files in
    dependency rules

db db.o supps.o parts.o sp.o gcc db.o
supps.o parts.o sp.o -o db db.o types.h db.h
supps.h parts.h sp.h supps.o types.h supps.h
parts.o types.h parts.h sp.o types.h sp.h
12
Touch Utility
  • touch -c fileName
  • updates the last modification and access times of
    the named files to the current time.
  • By default, if a specified file does not exist it
    is created with zero size.
  • To prevent this default, use -c option.
  • Use touch to force make to recompile files

13
Archiving Modules
  • GNU archive utility ar
  • ar key archivename file
  • Creates archive files (.a)?
  • Add (r, if file is not there)?
  • Remove (d)?
  • Replace (r)?
  • Append (q) adds to end of archive
  • Table of contents (t)?

14
GNU Profiler
  • Utility gprof profiles a running program
  • lets you see how the program spends its time
  • Must use -pg option with gcc
  • Creates file gmon.out by default

15
GNU Debug
  • Utility gdb helps debug a program
  • Must use -g option when compiling
  • gdb programname
  • Get help (help)?
  • Set breakpoints (break line_or_function)?
  • Look at variables (print variable_name)?
  • Run a program (run, step, or continue after
    breakpoint)?
  • List a program (list)?

16
Strip Utility
  • Utility strip removes extra info from a program
  • Useful after debug / profile
  • strip programname

17
Review
  • Compiling .c files
  • Including multiple files
  • Using make to compile several related files
  • How to simplify an example makefile
  • touch command
Write a Comment
User Comments (0)
About PowerShow.com