Advanced UNIX Programming: Week 1 Topics and UNIX Programming Environment, Slides of Computer Programming

An overview of the topics covered in the first week of an advanced unix programming course. The focus is on the unix programming environment, including editors (vi, pico, emacs), c compilers and debuggers, makefiles, and c features. Emacs is highlighted for its ability to compile and edit code within the editor, as well as its expandable functionality for lisp users.

Typology: Slides

2012/2013

Uploaded on 04/29/2013

parmita
parmita 🇮🇳

4.7

(17)

183 documents

1 / 19

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Advanced UNIX progamming
Docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Partial preview of the text

Download Advanced UNIX Programming: Week 1 Topics and UNIX Programming Environment and more Slides Computer Programming in PDF only on Docsity!

Advanced UNIX progamming

Week 1 Topics

  • Course outline and policies
  • UNIX programming environment
    • Editors
    • C compilers and debuggers
    • Makefiles
  • Review some features of C
    • Header files
    • Command line arguments
    • Utilities
  • Review some UNIX system calls
    • system, etc

Editors

  • vi, pico, emacs , etc
  • What is good about emacs?
    • emacs is more than just an editor
    • You can compile and edit within emacs
    • If you know lisp , you can expand its functionality
    • Some useful commands to get started:
      • C-h t get tutorial
      • C-g cancel command
      • C-x C-c quit emacs
      • C-h help

etags

  • This helps you go to a function definition
    • Particularly useful in programs spanning multiple files
    • At the shell prompt, type
      • etags *.[ch]
    • In emacs
      • Choose visit tags from the C menu
        • Or ESC-x visit-tags-table
      • Subsequently, find tag from the menu, or ESC-., will take you to the function definition

Compiling in emacs

  • Choose compile from the C menu
    • Or ESC-x compile
    • Errors and warnings will be printed on a sub- window
    • CTL-X ` will take you to the next error or warning

C compilers

  • gcc, cc
  • Using ANSI C, the code must pass with flags –Wall –ansi –pedantic with no warning messages
  • See example1.c
    • How can we fix warning?
  • Some examples
    • gcc –g –Wall –ansi –pedantic example1.c
    • gcc –g –c –Wall –ansi –pedantic example1.c
    • gcc –g example1.o
    • gcc –g example.o -lm
  • run to run the program

Make

  • make [-f makefile][option] target
    • A tool to update files derived from other files
    • The default files for make are ./makefile, ./Makefile, ./s.makefile
    • Use the –f option to specify some other file
      • make –f makefile
    • The makefile has three components
      • Macros: define constants
      • Target rules: Specify how targets are made
      • Inference rules: Specify how targets can be made, implicitly. make will first check if a target rule applies, before using inference rules.

make ... continued

  • Inference rules
    • Target:
    • command
    • command
    • Target must be of the form .s1 or .s1.s2 where .s1 and .s must be prerequisites of the .SUFFIXES special target. - .s1.s2  make *.s2 from *.s - .s1  make * from *.s
    • Example: . c: $(CC) –o $@ $< .c.o: $(CC) –c $<

makefile examples

  • See the example makefiles
    • makefile, makefile1, makefile
  • makefile1 will recompile only the modified files, instead of everything
  • makefile2 has inference rules
  • www.cs.fsu.edu/cgi-bin/man.cgi can be used to find more information

Header files

  • Usually define interfaces between separately compiled modules
  • May contain macro definitions, preprocessor directives, declarations of types, and function prototypes
  • Should not contain variable definitions or executable code

Some header file errors

  • Improper header file use can cause problems
    • Try compiling example2.c
    • Including a header file multiple times may cause redefinition errors
    • Why does including stdio.h twice not cause any problem? - Look at /usr/include/stdio.h

Macros with and without Parameters

  • #define MAX_LENGTH 256
    • ... for (i = 0; i < MAX_LENGTH; i++) ...
  • Macros can have parameters
    • #define max(a,b) (a > b)? a : b
  • What is wrong with the following?
    • #define sum(a, b) a + b
    • #define product(a, b) a*b
    • See example3.c, example3b.c, example3c.c, and example3d.c