Linking in OpenSSL libcrypto Statically


 
Thread Tools Search this Thread
Top Forums Programming Linking in OpenSSL libcrypto Statically
# 1  
Old 07-01-2011
Linking in OpenSSL libcrypto Statically

I have a C++ program which includes lots of libraries, including openssl libcrypto. In fact, the g++ switches are:

-lxml2 -lcrypto -lcurl etc.

The problem is that when I try to run it on a different flavor of Linux, it complains that it cannot load libcrypto.so.8. I did some research and learned about the difference between static and shared libraries, but can't quite figure out what steps to take to compile the libcrypto library in such a way that everything goes into the executable so that my program can be portable. Thanks in advance for any help you can give me.

Brandon
# 2  
Old 07-01-2011
You need to compile/link with -lcrypto -L dir of libcrypto.a to get a static link. If only .so is available, it will go dynamic.

It is portable in two pieces or if the far end has a compatible .so, hopefully one that is not hacked! It saves space, disk and RAM, increases cache hits as all on one host use same lib at once, and takes little time to dynamically link.
# 3  
Old 07-01-2011
Thanks. Can you give me an example of what the command would look like?
# 4  
Old 07-01-2011
Depends on the compiler, usually in a make file.
Code:
gcc -o yourname -Bstatic -L<dir-of-libcrypto.a> -lcrypto . . . yourfile.c

This User Gave Thanks to DGPickett For This Post:
# 5  
Old 07-01-2011
Thanks, but I have one point of confusion. How can I make this apply only to the one library libcrypto and not to any of the others in the list?
# 6  
Old 07-01-2011
Just put -Bdynamic before mentioning them, order is important left to right.
# 7  
Old 07-01-2011
Quote:
Originally Posted by DGPickett
Depends on the compiler, usually in a make file.
Code:
gcc -o yourname -Bstatic -L<dir-of-libcrypto.a> -lcrypto . . . yourfile.c

Ah, lcrypto is it? Thanks! I always wondered why I couldn't compile ssl-using things statically when giving -static -lssl...
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Create shared libs on AIX (with certain libs which are statically linked)

I want to create a shared lib with certain libs statically linked to it. I can generate a fully shared lib as follows: gcc -maix64 -DHAVE_CONFIG_H -I. -I./src -DHAVE_OPENSSL -I/usr/include/openssl -I/usr/include -I/usr/include/apr-1 -D_LARGEFILE64_SOURCE -I/usr/java8_64/include -shared -o... (0 Replies)
Discussion started by: amandeepgautam
0 Replies

2. UNIX for Advanced & Expert Users

Curl: fatal: libcrypto.so.1.0.0

Hi, I've installed curl with all despondency but when I try to start it I get: root@xxx> curl ld.so.1: curl: fatal: libcrypto.so.1.0.0: open failed: No such file or directory Killed Looks like I have to change/make symlinks but I don't know how/where. Any idia? ---------- Post... (3 Replies)
Discussion started by: mehrdad68
3 Replies

3. Solaris

libcrypto.so.0.9.7

Hi Can anyone tell me the use of libcrypto.so.0.9.7 ? I know it is used for SSH. Also is there a way to look into the content of these jars? Also is there a way to uncompress the same? i tried # uncompress libcrypto.so.0.9.7 libcrypto.so.0.9.7.Z: No such file or directory # jar xvf... (6 Replies)
Discussion started by: flinders1323
6 Replies

4. Programming

dlopen failing on library with statically linked dependencies

I am attempting to port a program from OS X to Linux. It's C++ & Qt Creator and I did the original Windows to OS X port, so I tried to make it as POSIX-compliant as possible; the OS X port works well, and the Linux port builds and starts (it's on Ubuntu 9.10) but has some issues running. The... (2 Replies)
Discussion started by: Hodapp87
2 Replies

5. Solaris

g++ linking problem...

I use Solaris 10, compiling with a custom g++ (3.4.6) and GNU binutils (2.17). Things have gone well on two different systems, but when I tried moving to a third, it all fell over. Basically, it is now using the CC linker, but I need to use options not available to it. I believe I have found the... (0 Replies)
Discussion started by: Elric of Grans
0 Replies

6. UNIX for Dummies Questions & Answers

is linking possible?

how would i link 2 files together? is it the same as copying? (1 Reply)
Discussion started by: trob
1 Replies

7. Programming

how to compile a program statically

how can i do static compilation in cc and -lldap i have system defined and user defined header file. Can any one suggest any site where from i can get some information about static and dynamic compilation. Thankx (1 Reply)
Discussion started by: bhakti
1 Replies

8. Programming

HOw to load dynamic lib from a statically linked program ?

I need to load a dynamic library from a statically linked program. Is there a way without recompiling my program. when i try to do that my program just crashes. If not possible, how can I avoid crashing the program when i try to load the dynamic lib, again without recompiling. If my... (1 Reply)
Discussion started by: disclaimer
1 Replies

9. Programming

Linking problem while linking to shared library

Hi I'm getting ld: fatal: option -h and building a dynamic executable are incompatible ld: fatal: Flags processing errors When I run ld -shared -L/usr/dt/lib -lDtSvc -o builtin.so Workspace.o after running gcc -fPIC -I/usr/X11R6/include -I/usr/dt/include -c Workspace.c I'm... (6 Replies)
Discussion started by: laho
6 Replies
Login or Register to Ask a Question