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 >