ldd libAPP.so does NOT have any reference to libSSL.so or for that matter any SSL library. Which is why I had to use nm to check for SSL related symbols
On Mon, Nov 4, 2019 at 6:31 PM Floodeenjr, Thomas < thomas_floodee...@mentor.com> wrote: > To check if you are linked statically or dynamically, what does ldd tell > you? (ldd libAPP.so) Your library should not have a dependency on > libssl.so or libcrypto.so if you are linked statically. > > > > -Tom > > > > *From:* openssl-users [mailto:openssl-users-boun...@openssl.org] *On > Behalf Of *Aijaz Baig > *Sent:* Sunday, November 3, 2019 11:30 PM > *To:* openssl-users@openssl.org > *Subject:* static linking libssl and libcrypto > > > > I am trying to build a shared library that internally links openssl and > crypto libraries statically so I can use it in a production environment. To > that end I am using the following Makefile > > APPBASE=/home/AB/Documents/APP/APP_2.17.0 > > OPENSSL1.0.2p_INSTALL_LOC=/home/AB/Documents/APP/OpenSSL-1.0.2p-installation > > CC=gcc > > CFLAGS= -Wall -g -O -fPIC > > RM= rm -f > > .PHONY: all clean > > > > src=$(wildcard *Generic/*.c *Linux/*.c) > > $(info source=$(src)) > > > > #we use the custom compiled openssl version > > #and NOT the one available on the system > > #INC=-I/usr/include/openssl > > INC+=-I$(OPENSSL1.0.2p_INSTALL_LOC)/include/openssl > > INC+=$(foreach d,$(incdir),-I$d) > > $(info includes=$(INC)) > > > > LIB=-L$(OPENSSL1.0.2p_INSTALL_LOC)/lib > > #LIB=-llibssl -llibcrypto > > LIB+=-lssl -lcrypto > > $(info links=$(LIB)) > > #LIB+=-L/usr/lib/ > > > > obj=$(src:.c=.o) > > all: libAPP.so > > clean: > > $(RM) *.o *.so > > $(shell find $(APPBASE) -type f -iname "*.o" -exec rm -rf {} \;) > > > > .c.o: > > ${CC} -static ${CFLAGS} $(INC) -c $< $(LIB) -o $@ > > > > libAPP.so: $(obj) > > $(LINK.c) -shared $^ -o $@ > > As mentioned here ( > https://stackoverflow.com/questions/18185618/how-to-use-static-linking-with-openssl-in-c-c/25811538#25811538), > I've changed the linker flags to: > > -lcrypto -lz -ldl -static-libgcc > > > > but it doesn't seem to change the size of the generated so file. On > checking for references to SSL in this so file, I see there are a total of > 87 entries > > > > nm libAPP.so | grep -i "ssl" | wc -l > > 87 > > > > whereas listing *only* the global symbols from libssl.a tells me it has > 1113 globally defined symbols. > > nm -g ../OpenSSL-1.0.2p-installation/lib/libssl.a | grep -i "ssl" | wc -l > > 1113 > > > > I do not know if libSSL got indeed linked statically or not. Could someone > please shed some light on it? > > > > -- > > > Best Regards, > > Aijaz Baig > -- Best Regards, Aijaz Baig