rucki

rucki, materiały PWr, W11 - PPT
[ Pobierz całość w formacie PDF ]
1. Wprowadzenie
(2006/2007)
Tworzenie oprogramowania

Język C

Budowa programu napisanego w języku C

podział na pliki z definicjami funkcji,

korzystanie z bibliotek systemowych i własnych

automatyzacja kompilacji za pomocą make

dzielenie projektu na części: katalogi zawierające pliki źródłowe, pliki nagłówkowe, pliki
wykonywalne, pliki biblioteczne

Narzędzia programisty w środowisku GNU/Linux

edytory (vi, vim, mcedit, emacs,kwrite, kate, anjuta, ...)

kompilator: gcc

inne użyteczne narzędzia:
o
przeszukiwanie dokumentacji (man, apropos, whatis, info, pinfo, GNOME yelp,
...)
o
wyszukiwanie tekstu (grep i wyrażenia regularne)
o
porównywanie plików (diff, patch)
o
automatyczne tworzenie dokumentacji: (doxygene, upiększcze kodu – indent, ...)
o
debuger (gdb – tekstowy, trzeba odpowiednio skompilować program, graficzne:
kdbg, ddd, ...)
1
1. Wprowadzenie
(2006/2007)
Podręcznik systemowy – polecenie man

Sekcje

2 – system calls

3 – libraries

4 – special, device, files (np.
/dev/random
,
/dev/urandom
)

5 – file formats

Użyteczne polecenia
$ whereis printf
printf: /usr/bin/printf /usr/include/printf.h
/usr/share/man/man1/printf.1.gz /usr/share/man/man3/printf.3.gz
/usr/share/man/man1p/printf.1p.gz /usr/share/man/man3p/printf.3p.gz
$ man 3 printf
PRINTF(3) Linux Programmer's Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf
- formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
...
DESCRIPTION
The functions in the printf family produce output according to a format as
described below. The functions printf and vprintf write output to
stdout, the standard output stream; fprintf and vfprintf write output to
the given output stream; sprintf, snprintf, vsprintf and vsnprintf
write to the character string str.
$ whatis printf
printf (1) - format and print data
printf (3) - formatted output conversion
printf [builtins] (1) - bash built-in commands, see bash(1)
$ apropos printf
fprintf [printf] (3) - formatted output conversion
printf (1) - format and print data
printf (3) - formatted output conversion
printf [builtins] (1) - bash built-in commands, see bash(1)
snprintf [printf] (3) - formatted output conversion
sprintf [printf] (3) - formatted output conversion
...
$ info printf
$ info --apropos printf
2
1. Wprowadzenie
(2006/2007)
Kompilacja programu

Kompilator
gcc
Przykład wywołania:
$ gcc file1.c file2.c file3.c –o prog

Pełny opis opcji:
man gcc

Ważniejsze opcje kompilatora gcc

-o filename
: określa nazwę pliku wynikowego, zawierającego program gotowy do
wykonania

-c
: kompiluj tylko do postaci obiektów (.o), nie łącz

-D symbol
: definiuj symbol w preprocesorze

-I
path
: gdzie szukać plików nagłówkowych (domyślnie – aktualny katalog
i katalogi standardowych bibliotek)

-L path
: określa dodatkowy katalog przeglądany w poszukiwaniu bibliotek

-l libname
: określa dołączane biblioteki (np.
–lm
oznacza bibliotekę
libm.so
lub
libm.a
, w takiej kolejności)

-static
: dołączaj tylko biblioteki statyczne

-O n
: określa stopień optymalizacji kodu wynikowego

-pedantic
: : wyświetl wszystkie ostrzeżenia i błędy wymagane przez standard
ANSI

-Wall
: włącz wszystkie użyteczne ostrzeżenia

-v
: wyświetl komunikaty o przebiegu kompilacji

-std
: określa używany standard języka C (np. C99 )
3
1. Wprowadzenie
(2006/2007)
Kompilacja programu za pomocą
make

Zasada: plik Makefile zawiera cele (ang.
targets
), które chcemy osiągnąć i reguły (ang.
rules
)
wyjaśniające jak to zrobić. Definiuje się również zależności (ang.
dependents
,
prerequisities
),
określające kiedy należy ponownie zbudować dany cel.

Przykład 1
$ cat p1.c
#include <stdio.h>
int main()
{
printf("Witaj\n");
return 0;
}
$ cat Makefile
p1: p1.c
gcc -Wall p1.c -o p1
$ make
gcc -Wall p1.c -o p1
$ ./p1
Witaj

Przykład 2
CC=gcc
CFLAGS=-Wall -O2
SOURCES=p1.c
OUTFILE=p1
all:
$(CC) $(CFLAGS) $(SOURCES) -o $(OUTFILE)

Przykład 3
CC=gcc
CFLAGS=-Wall -O2 -lm
SOURCES=p1.c funkcje.c
OUTFILE=p1
all:
$(CC) $(CFLAGS) $(SOURCES) -o $(OUTFILE)

Przykład 4
CC=gcc
CFLAGS=-Wall -O2
SOURCES=prog1.c mylib1.c
OUTFILE=prog1
SRCDIR=./src
INCDIR=./include
LDFLAGS= -lm
all:
$(CC) $(CFLAGS) $(SRCDIR)/$(SOURCES) $(LDFLAGS) -I$(INCDIR) \
-o $(OUTFILE)
4
1. Wprowadzenie
(2006/2007)

Przykład 5
$ ls -R .
.:
include Makefile src
./include:
func.h
./src:
func.c main.c
$ cat Makefile
CC=gcc
CFLAGS=-Wall -O2
SOURCES=main.c func.c
#to po prostu main.o func.o, tylko krócej
OBJECTS=$(SOURCES:.c=.o)
OUTFILE=prog1
SRCDIR=./src
INCDIR=./include
LDFLAGS= -lm
all: $(OBJECTS)
$(CC) $(LDFLAGS) -o $(OUTFILE) $(OBJECTS)
main.o:
$(CC) -c $(CFLAGS) -I$(INCDIR) $(SRCDIR)/main.c
func.o:
$(CC) -c $(CFLAGS) -I$(INCDIR) $(SRCDIR)/func.c
clean:
rm -f $(OBJECTS) $(OUTFILE)
$ make
gcc -c -Wall -O2 -I./include ./src/main.c
gcc -c -Wall -O2 -I./include ./src/func.c
gcc -lm -o prog1 main.o func.o
$ make clean
rm -f main.o func.o prog1
5
[ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lemansa.htw.pl
  • Tematy
    Powered by wordpress | Theme: simpletex | © Smętna dusza może nas zabić prędzej, o wiele prędzej niż zarazek.