Добавлено ДЗ4

This commit is contained in:
2020-10-12 23:38:41 +03:00
parent f816062f2e
commit e37f95ba81
5 changed files with 71 additions and 0 deletions

53
04_Multifile/Makefile Normal file
View File

@@ -0,0 +1,53 @@
GENERATES = prog prog-a prog-so README libout.a libout.so
TRASH = *.o *~ o.*
%.o: %.c
cc $< -c -o $@
fun.o: outlib.h
all: README prog prog-a
prog: const.o fun.o prog.o
cc $^ -o $@
prog-a: libout.a prog.o
cc -L. prog.o -lout -o prog-a
libout.a: const.o fun.o
ar -rcs libout.a const.o fun.o
prog-so: libout.so prog.o
cc -L. prog.o -lout -o prog-so
libout.so: const.c fun.c outlib.h
cc fun.c -c -fPIC -o fun-pic.o
cc const.c -c -fPIC -o const-pic.o
cc -shared fun-pic.o const-pic.o -o libout.so
test: prog prog-a prog-so
./prog hello 2>&1 > prog.test.o
./prog-a hello 2>&1 > prog-a.test.o
LD_LIBRARY_PATH=`pwd` ./prog-so hello 2>&1 > prog-so.test.o
cmp prog.test.o prog-a.test.o
cmp prog-a.test.o prog-so.test.o
./prog hell o world 2>&1 > prog.test.o
./prog-a hell o world 2>&1 > prog-a.test.o
LD_LIBRARY_PATH=`pwd` ./prog-so hell o world 2>&1 > prog-so.test.o
cmp prog.test.o prog-a.test.o
cmp prog-a.test.o prog-so.test.o
README: prog
./$< 2> $@
clean:
rm -f $(TRASH)
distclean: clean
rm -rf $(GENERATES)

2
04_Multifile/README Normal file
View File

@@ -0,0 +1,2 @@
./prog v0.00: Print all arguments
Usage: ./prog arg1 [arg2 […]]

1
04_Multifile/const.c Normal file
View File

@@ -0,0 +1 @@
int Count=0;

11
04_Multifile/fun.c Normal file
View File

@@ -0,0 +1,11 @@
#include <stdio.h>
#include "outlib.h"
void output(char *str) {
printf("%d: %s\012", Count++, str);
}
void usage(char *prog) {
fprintf(stderr, "%s v%.2f: Print all arguments\012\t"\
"Usage: %s arg1 [arg2 […]]\012", prog, VERSION, prog);
}

4
04_Multifile/outlib.h Normal file
View File

@@ -0,0 +1,4 @@
void output(char *);
void usage(char *);
extern int Count;
#define VERSION 0.0