Ok. Got it. Thanks On Wed, Nov 6, 2019 at 1:41 PM Brice André <br...@famille-andre.be> wrote:
> Then it means you properly compiled SSL in static. > > Regarding my first point, what I mean is that : if you statically link > your libApp.so with ssl library, it will no need any dynamic library > dependencies, which is probably what you want. But your libApp.so will be > loaded by a program. If this program also uses SSL (direct access, not > through your libApp.so library), and performs a dynamic link, you will > still need the ssl.so to run your application, even if your dll is > statically linked with it. > > Regards, > Brice > > > Le mar. 5 nov. 2019 à 18:24, Aijaz Baig <aijazba...@gmail.com> a écrit : > >> 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 >> > -- Best Regards, Aijaz Baig