static linking libssl and libcrypto

Aijaz Baig aijazbaig1 at gmail.com
Tue Nov 5 17:24:06 UTC 2019


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_floodeenjr at 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-bounces at openssl.org] *On
> Behalf Of *Aijaz Baig
> *Sent:* Sunday, November 3, 2019 11:30 PM
> *To:* openssl-users at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20191105/947684b5/attachment.html>


More information about the openssl-users mailing list