CXX=g++ CXXFLAGS=-O0 -g LDFLAGS=-Wl,-rpath,.,-z,loadfltr LD=g++ INIT=-E --no-whole-archive INITCXX= #INIT=-init initdso -E --no-whole-archive #INITCXX=-Wl,-init,initdso AR = ar vru all: main-s main-d .SUFFIXES: .cc .o .cc.o: $(CXX) $(CXXFLAGS) -c $< main-s: main.o libmydso.a $(LD) $(LDFLAGS) -o $@ main.o libmydso.a main-d: libmydso.so main.o $(LD) $(LDFLAGS) -o $@ main.o -L. -lmydso libmydso.so: dso.o $(LD) $(INITCXX) -shared -Wl,-E,--no-whole-archive -g $(LDFLAGS) -o $@ dso.o libmydso.a: dso.o $(AR) $@ dso.o libmydso2.so: dso.o ld $(INIT) -rpath . -shared -o $@ dso.o main-dd: libmydso2.so main.o $(LD) $(LDFLAGS) -o $@ main.o -L. -lmydso2 test: main-d main-s main-dd env LD_LIBRARY_PATH=. ./main-d ./main-s env LD_LIBRARY_PATH=. ./main-dd clean: rm -f *.o *.so *.a main-d main-dd main-s