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