static linking libssl and libcrypto
Brice André
brice at famille-andre.be
Wed Nov 6 08:11:15 UTC 2019
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 <aijazbaig1 at 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_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/20191106/68fcc4fe/attachment-0001.html>
More information about the openssl-users
mailing list