Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # PIE executable, dynamically loaded shared library, shared glibc
- CC=gcc
- CPPFLAGS=-U_DEFAULT_SOURCE
- SO_CFLAGS=-Wall -Wextra -pedantic -std=c11 -m64 -march=x86-64 -mtune=generic -pipe -O3 -fPIC
- CFLAGS=-Wall -Wextra -pedantic -std=c11 -m64 -march=x86-64 -mtune=generic -pipe -O3 -fPIE
- SO_LDFLAGS=-fPIC
- LDFLAGS=-pie
- LIBS=-ldl
- all: program
- program: program.o libmodule.so
- $(CC) $(LDFLAGS) $< -o $@ $(LIBS)
- program.o: program.c output.h sum.h
- $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
- libmodule.so: output.o sum.o
- $(CC) $(SO_LDFLAGS) -shared -Wl,-soname,$@.1 -o $@.1.0 $^
- ln -sf $@.1.0 $@.1
- ln -sf $@.1 $@
- output.o: output.c output.h
- $(CC) $(CPPFLAGS) $(SO_CFLAGS) -c $< -o $@
- sum.o: sum.c sum.h
- $(CC) $(CPPFLAGS) $(SO_CFLAGS) -c $< -o $@
- distclean: clean
- $(RM) program libmodule.so.1.0 libmodule.so.1 libmodule.so
- clean:
- $(RM) program.o output.o sum.o
- .PHONY: all distclean clean
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement