diff options
| author | Carlos Maiolino <[email protected]> | 2025-09-06 12:59:56 +0200 |
|---|---|---|
| committer | Carlos Maiolino <[email protected]> | 2025-09-06 13:01:26 +0200 |
| commit | 4d1c070b813f3b3b64bd8bf96723756041840ac0 (patch) | |
| tree | 72a58d5c43e218e2700c30ac29db1b5a98ba8b65 /C/HF/chap8/Makefile | |
| parent | 133a564a7ba1f57ff229e7c181227d43b4bae584 (diff) | |
Create shared library
Play with shared libs. Building the same library with different
functionalities and loading them at runtime, separately.
Fun way to see how we can change runtime behavior without recompiling
everything.
Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'C/HF/chap8/Makefile')
| -rw-r--r-- | C/HF/chap8/Makefile | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/C/HF/chap8/Makefile b/C/HF/chap8/Makefile index df3283e..8377c1b 100644 --- a/C/HF/chap8/Makefile +++ b/C/HF/chap8/Makefile @@ -13,3 +13,27 @@ bin/libs/xor.o: $(INCLUDE_DIR)/libs/xor.h src/libs/xor.c bin/libs/encrypt.o: $(INCLUDE_DIR)/libs/encrypt.h src/libs/encrypt.c cc -I $(INCLUDE_DIR) -c src/libs/encrypt.c -o bin/libs/encrypt.o + +# Create DSO and PIC versions +# +ecatS: bin/libs/libencrypt.a + cc -I $(INCLUDE_DIR) -L bin/libs -o bin/ecats src/ecat.c -lencrypts + +bin/libs/libencrypts.so: bin/libs/xor-pic.o bin/libs/encrypt-pic.o + cc -I $(INCLUDE_DIR) -shared -o bin/libs/libencrypts.so bin/libs/xor-pic.o bin/libs/encrypt-pic.o + +# This creates the same lib with a broken encrypt_arr call. +# We can run the same program passing the different lib at runtime +# and change the behavior of encrypt_arr at runtime +bin/broken_libs/libencrypts.so: bin/libs/xor-pic.o bin/libs/encrypt2-pic.o + cc -I $(INCLUDE_DIR) -shared -o bin/broken_libs/libencrypts.so bin/libs/xor-pic.o bin/libs/encrypt2-pic.o + + +bin/libs/xor-pic.o: $(INCLUDE_DIR)/libs/xor.h src/libs/xor.c + cc -fPIC -I $(INCLUDE_DIR) -c src/libs/xor.c -o bin/libs/xor-pic.o + +bin/libs/encrypt-pic.o: $(INCLUDE_DIR)/libs/encrypt.h src/libs/encrypt.c + cc -fPIC -I $(INCLUDE_DIR) -c src/libs/encrypt.c -o bin/libs/encrypt-pic.o + +bin/libs/encrypt2-pic.o: $(INCLUDE_DIR)/libs/encrypt.h src/libs/encrypt2.c + cc -fPIC -I $(INCLUDE_DIR) -c src/libs/encrypt2.c -o bin/libs/encrypt2-pic.o |
