diff options
author | M.Gergő | 2020-05-26 23:16:26 +0200 |
---|---|---|
committer | M.Gergő | 2020-05-26 23:16:26 +0200 |
commit | 5872c7cb7620a60b0921c6936d7bf5fad3dd94ff (patch) | |
tree | 578780c96c1f3910c78ed7e9bf0e42df14dc90db | |
parent | 764ba227cc4a07d4e40bc4a930459ab14078c43d (diff) | |
download | lightconfini-5872c7cb7620a60b0921c6936d7bf5fad3dd94ff.tar.gz lightconfini-5872c7cb7620a60b0921c6936d7bf5fad3dd94ff.zip |
Static linking
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | makefile | 41 | ||||
-rw-r--r-- | src/main.c | 25 | ||||
-rwxr-xr-x | test.sh | 4 |
4 files changed, 46 insertions, 25 deletions
@@ -6,6 +6,7 @@ build/ *.gch obj/ bin/ +libdir/ *ValgrindOut.xml* others/test.ini massif.* @@ -1,4 +1,4 @@ -.PHONY: all clean test testlib install copylib ldconf lib debug distclean +.PHONY: all clean main test testlib testlibd install copylib ldconf lib debug distclean # buid & link with gcc CC = gcc @@ -11,12 +11,14 @@ RM = -/bin/rm CP = -/bin/cp # fordíto általános flagek +PWD = $(shell pwd) LASTVER = $(shell git describe) LASTVERT = $(shell git describe --tags --abbrev=0) LASTMAINT = $(firstword $(subst ., ,$(LASTVERT))) CFLAGS = -Wall -c -D"GIT_LAST=$(LASTVER)" -D"GIT_LASTT=$(LASTVERT)" -D"GIT_MAINT=$(LASTMAINT)" LDFLAGS = LDLIBS = +PREP= # Ha libdir-be "lib"-et írunk, akkor körbeforgó fggőség lesz belőle BINDIR = bin @@ -32,30 +34,35 @@ PROG = $(BINDIR)/lightconfini OBJ = $(patsubst $(SRCDIR)/%.c, %.o, $(wildcard $(SRCDIR)/*.c)) OBJS = $(addprefix $(OBJDIR)/,$(OBJ)) lib: OBJS = $(addprefix $(OBJDIR)/, $(filter-out main.o, $(OBJ)) ) -lib: PROG = $(LIBDIR)/liblightconfini.so.$(LASTVER) +lib: PROG = $(LIBDIR)/liblightconfini.so.$(LASTVERT) # Egyik targetben beállított változó nem érvényes a másik targetben! # ALL kell legyen legelőször! # Az sem mindegy, hogy mellette van, vagy alatta egy sorral! -all: lib -test: $(PROG) -lib: $(PROG) +all: lib +test: clean $(PROG) +lib: $(PROG) ldconf debug: clean $(PROG) install: lib copylib -testlib: clean lib ldconf clean - $(CC) $(CFLAGS) -D"TESTLIB=1" -o $(OBJDIR)/main.o $(SRCDIR)/main.c - $(LD) $(LDFLAGS) $(OBJDIR)/main.o -o $(PROG) $(LDLIBS) +testlib: lib ldconf clean main +testlibd: lib ldconf clean main # debug-hoz felüldefiniálva debug: CFLAGS = -Wall -c -g -g3 -ggdb -std=c89 -Wpedantic -Wmissing-prototypes -D"GIT_LAST=$(LASTVER)" -D"GIT_LASTT=$(LASTVERT)" -D"GIT_MAINT=$(LASTMAINT)" debug: LDLIBS = -lefence # make lib FLAGS: not link: -c, relative addresses: -fPIC lib: CFLAGS = -fPIC -c -Wall -D"GIT_LAST=$(LASTVER)" -D"GIT_LASTT=$(LASTVERT)" -D"GIT_MAINT=$(LASTMAINT)" -lib: LDFLAGS = -shared -Wl,-soname,liblightconfini.so.$(LASTMAIN) +lib: LDFLAGS = -shared -Wl,-soname,liblightconfini.so.$(LASTMAINT) lib: LDLIBS = -lc # nem mindegy, hogy mellette van, vagy alatta egy sorral! -testlib: LDFLAGS = -ldl -rdynamic +testlib: LDFLAGS = -L $(PWD)/$(LIBDIR)/ +testlib: LDLIBS = -llightconfini +testlib: PREP = TESTLIB +#Dinamikus betöltés tesztelése +testlibd: LDFLAGS = -rdynamic +testlibd: LDLIBS = -ldl +testlibd: PREP = TESTLIBD # Ha még nem létezik az obj könyvtár, létrehozza @@ -64,7 +71,7 @@ $(PROG): | $(BINDIR) $(PROG): | $(LIBDIR) # Fordított sorrend: először a főprogram -$(PROG): $(OBJS) +$(PROG) lnk: $(OBJS) $(LD) $(LDFLAGS) $(OBJS) -o $(PROG) $(LDLIBS) @echo ' ' @@ -72,6 +79,10 @@ $(PROG): $(OBJS) $(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.c $(CC) $(CFLAGS) -o "$@" "$<" +# A main újrafordítása +main: + $(CC) $(CFLAGS) -D"$(PREP)" -o $(OBJDIR)/main.o $(SRCDIR)/main.c + $(LD) $(LDFLAGS) $(OBJDIR)/main.o -o $(PROG) $(LDLIBS) # OBJ létrehozáshoz $(BINDIR): @@ -84,11 +95,13 @@ $(LIBDIR): rebuild: clean all copylib: - $(CP) -r $(LIBDIR)/* /usr/local/lib/ - ldconfig + $(CP) -r $(LIBDIR)/* /usr/local/lib/ + ln -sf /usr/local/lib/liblightconfini.so.$(LASTVERT) /usr/local/lib/liblightconfini.so + ldconfig ldconf: - ldconfig -n $(LIBDIR) + ln -sf $(PWD)/$(LIBDIR)/liblightconfini.so.$(LASTVERT) $(PWD)/$(LIBDIR)/liblightconfini.so + ldconfig -n $(PWD)/$(LIBDIR)/ clean: $(RM) $(OBJS) @@ -85,7 +85,7 @@ int main(int argc, char* argv[]){ printf("\n\nFUNC: lciniReadOutOwn():\n\n"); - lciniReadOutOwn(filename); + /* lciniReadOutOwn(filename); */ @@ -117,18 +117,21 @@ int main(int argc, char* argv[]){ printf("\n\nFUNC: lciniGetFromFileShort():\n\n"); - sret2 = lciniGetFromFileShort(filename, search_sec, search_par, NULL); - printf("SR: '%s', %d, t: ",sret2->ret,sret2->retlen); - if(sret2->retType == lcini_shortretEMPTY){ - printf("sret_empty\n"); - }else if(sret2->retType == lcini_shortretERROR){ - printf("sret_err\n"); - } else { - printf("sret_ok\n"); + sret2 = lciniGetFromFileShort(filename, search_sec, search_par, NULL); + printf("---\n"); + if(sret2){ + printf("SR: '%s', %d, t: ",sret2->ret,sret2->retlen); + if(sret2->retType == lcini_shortretEMPTY){ + printf("sret_empty\n"); + }else if(sret2->retType == lcini_shortretERROR){ + printf("sret_err\n"); + } else { + printf("sret_ok\n"); + } } printf("\n\nFUNC: lciniGetFromFileStr():\n\n"); - r=lciniGetFromFileStr(filename, search_sec, search_par, buff6, 100); + /* r=lciniGetFromFileStr(filename, search_sec, search_par, buff6, 100); */ printf("r: %d, R: '%s' \n",r,buff6); @@ -141,6 +144,6 @@ int main(int argc, char* argv[]){ free(buff4); free(buff5); free(buff6); - printf("\n"); + printf("\n -- end --\n"); return 0; } @@ -0,0 +1,4 @@ +#!/bin/bash + +# Static linked libraray +LD_LIBRARY_PATH=libdir/ ./bin/lightconfini tests/bom.ini
\ No newline at end of file |