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. 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. 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. I succeded in 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. That leaves me with telling users that they must update gcc and gcc-c++, not completely unreasonable, perhaps. 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. Brandon
-----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. -----Original Message----- From: Amol Tambe <amolta...@gmail.com> To: brandonshw <brandon...@aol.com> Sent: Tue, Jul 19, 2011 12:19 pm Subject: Re: Trying to Link Statically to Libcrypto Good to hear that. Try this to get one step further g++ -o"<My exe name>" <my object file list> -static -lcrypto -lldap -lxml2 -llber -lz -ldl -lm -lssl -dynamic -lsasl2 On Tue, Jul 19, 2011 at 9:21 PM, <brandon...@aol.com> wrote: Well, not too bad. This is what I get: /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 and I actually don't have a static version of libsasl yet, so that error is understandable. I wish I had a better mental model of what the principles here are. People seem to have told me that any library listed must be followed by every library it calls. I suppose with tools like ldd or nm, I could work this out, but it doesn't seem very simple. I wish that there were some kind or multi-pass linker so that order was irrelevant. Anyway, thank you. Brandon -----Original Message----- From: Amol Tambe <amolta...@gmail.com> To: brandonshw <brandon...@aol.com> Sent: Tue, Jul 19, 2011 11:03 am Subject: Re: Trying to Link Statically to Libcrypto Ahh ha... now I get your problem. Change this : g++ -o"<My exe name>" <my object file list> /usr/lib/libcrypto.a /usr/lib/libldap.a /usr/lib/libxml2.a /usr/lib/liblber.a /usr/lib/libssl.a -lz -ldl -lm -lsasl2 2>&1 To : g++ -o"<My exe name>" <my object file list> -static -lcrypto -lldap -lxml2 -llber -lz -ldl -lm -lsasl2 -lssl If you get some errors, try changing the sequence of libs.