What a great amount of useful information.  Thanks.




-----Original Message-----
From: Jeffrey Walton <noloa...@gmail.com>
To: openssl-users <openssl-users@openssl.org>
Sent: Wed, Jul 20, 2011 9:57 am
Subject: Re: Trying to Link Statically to Libcrypto


On Wed, Jul 20, 2011 at 8:48 AM,  <brandon...@aol.com> wrote:
 It didn't fix it.  In the end, I cannot link statically without libsasl2.a,
 which I am having difficulty obtaining, but which must be somehow
 obtainable.
ttp://asg.web.cmu.edu/sasl/sasl-library.html
> In the meantime, I am including libraries for which I have a
 static version in my objective files list, rather than as linker flags.  I
 am still not able to link in some libraries statically and others
 dynamically with -libraryname, unless I hide library names or something.
 The -dynamic flag doesn't work, nor to Bdynamic and Bstatic, which are
 really ld, not gcc, options.
he compiler only needs to produce relocatable code/non-relocatable
ode. Its up to the linker to glue it together. To pass linker flags,
ne usually uses -Wl from the front end. If you not using GCC to pass
inker flags, one usually uses '-c' to compile, and then calls `ld`
irectly with tflags such as -Bstatic. Have you been doing one or the
ther? Or are you mixing them?
> Even when I had included everything except lsasl2 and one other minor
 library among my objctives, I was still getting problems on some very
 old Linux installations that it couldn't find references to the
 right GLIBCXX (whatever that is) in my c and c++ libraries.
elcome to the world of Linux! Wait until you try an build something
hat needs fetch six or eight bleeding edge/unstable packages due to
ependencies.
GLIBC uses the proverbial 'call gate' to interact with the operating
ystem. On Linux, its a syscall and and the defined calls (such as
rintf -> write) are defined in .../kernel/syscall.c. For example, see
rch/x86/kernel/syscall_64.c.
Robert Love gives a very good description of the process in Linux
ernel Development. Also see syscall(2) at
ttp://linux.die.net/man/2/syscalls.
> including libstdc++.a in my object file list, but when I tried to include
 glibc.a, it broke the application.  In googling around, I saw some posts
 that said that even if I could include the compiler libraries in my code, it
 would make them less portable, not more portable, because the runtime
 environment changes almost with every release.
LL hell is alive and well, even on Linux!
> That leaves me with telling users that they must update gcc
 and gcc-c++, not completely unreasonable,
 perhaps.
 see you've never tried to build binutils and gcc ;) Make sure you
oin the GCC-Help Mailing List at http://gcc.gnu.org/lists.html.
onathan Wakely and Ian Lance Taylor do a great job (I hope they
ublish an up to date book on GCC one day).
> Although my current orders are to make a portable executable, I think that I
 may recommend that we use the "configure->make->make install" or "rpm/deb"
 technique instead.  I don't know how to write those and would have to learn.
n the end, I think you're fighting something that is fundamental to Linux.
You might consider familiarizing yourself with a Linux Shared Library
owTo: Drepper's www.akkadia.org/drepper/dsohowto.pdf,
ttp://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html or
ttp://tldp.org/HOWTO/Program-Library-HOWTO/.
Finally, you might find one of the comp.os.linux groups to be a better
esource. For example, comp.os.linux.development (see
ttp://groups.google.com/groups/dir?sel=usenet%3Dcomp.os.linux%2C).
Jeff
> -----Original Message-----
 From: Amol Tambe <amolta...@gmail.com>
 To: brandonshw <brandon...@aol.com>
 Sent: Wed, Jul 20, 2011 3:35 am
 Subject: Re: Trying to Link Statically to Libcrypto

 Good to know all your problems were solved.
 What fixed the last one? Mind sharing the last link line that worked?
 It will even be worth posting that on the OpelSSL list so that others know
 in future if needed.

 On Tue, Jul 19, 2011 at 11:32 PM, <brandon...@aol.com> wrote:
>
> It sounds great, but oddly, this is what happened:
>
> [root@linux Release]# ls -l /usr/lib/libsasl*
> lrwxrwxrwx. 1 root root    18 2011-07-08 18:35 /usr/lib/libsasl2.so ->
> libsasl2.so.2.0.22
> lrwxrwxrwx. 1 root root    18 2011-07-08 13:35 /usr/lib/libsasl2.so.2 ->
> libsasl2.so.2.0.22
> -rwxr-xr-x. 1 root root 98628 2009-02-24 05:44 /usr/lib/libsasl2.so.2.0.22
> [root@linux Release]#
> [root@linux Release]# g++  -o"<my executable name>" <my object files>
> -static -lcrypto -lldap -lxml2 -llber -lz -ldl -lm -lssl -dynamic -lsasl2
> /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../libcrypto.a(fips.o): In
> function `FIPSCHECK_verify':
> (.text+0xafb): warning: Using 'dlopen' in statically linked applications
> requires at runtime the shared libraries from the glibc version used for
> linking
> /usr/bin/ld: cannot find -lsasl2
> collect2: ld returned 1 exit status
> [root@linux Release]#
> When I do not use the static keyword, it finds it.  It is as though it
> didn't see the dynamic flag.
>
> [SNIP]
_____________________________________________________________________
penSSL Project                                 http://www.openssl.org
ser Support Mailing List                    openssl-users@openssl.org
utomated List Manager                           majord...@openssl.org

Reply via email to