CSCI 3294 (Unix Power Tools), Spring 2005:
Homework 7
- Assigned:
- April 11, 2005.
- Due:
- April 18, 2005, at 5pm.
- Credit:
- 20 points.
Read about the following topics
in the list of suggested readings,
either in one of the suggested readings or
in another book or reference.
(This is the topics for April 11):
(Notice that questions below are grouped by topic,
so you can read about one topic,
do the related questions, and then
move on to the next topic.)
Answer the following questions. You may write out your answers by
hand or using a word processor or other program, but please submit
hard copy, either in class or in my mailbox in the department office.
Answers to most questions will involve experimentation on
a UNIX or Linux system. You are free to use any appropriate system;
if you use something other than Red Hat Linux please tell me what.
- (20 points)
Suppose you have a C program consisting of the following
files:
- defs.h containing macro and constant definitions.
- foo.h containing constants and
prototype definitions for
function foo.
- foo.c containing code for function foo.
This file contains #include directives to
include defs.h and foo.h.
- bar.h containing constants and
prototype definitions for
function bar.
- bar.c containing code for function bar.
This file contains #include directives to
include defs.h and bar.h.
- main.c containing code for the main program,
which calls functions foo and bar.
This file also contains #include directives to
include defs.h, foo.h, and bar.h.
Write a makefile that:
- When you type make main, creates executable
main from the source files,
compiling just the parts of this program that
need to be recompiled (because either source code has
changed or an #include'd file has changed).
Compile using any C compiler (cc or gcc)
but using the flags -Wall, -pedantic,
and -O.
- When you type make clean, deletes all
the object files for the program.
- When you type make xclean, deletes all
the object files for the program and the executable.
You can make use of the implicit rules defined by
make if they will help. (They probably will.)
If you want to do some testing of your makefile, create
minimal files as described above. Notice that
the command touch
can be used to change a file's timestamp without opening
it in an editor, etc.
Berna Massingill
2005-04-11