Hi Lukas,

On Sun, Sep 29, 2013 at 02:41:11PM +0200, Lukas Tribus wrote:
> Hi!
>  
> (sorry for duplicates, previous mail hit the wire to fast...)

hehe :-)

> > Yes, and I have fixed this two weeks ago. The problem is that the "ADDINC"
> > and "ADDLIB" variables are not suited for passing single-component paths
> > since they suffix everything. Look what it results in your build log :
> >
> > -lcrypt -lssl -lcrypto -L/usr/lib -Wl,-Bstatic -lpcreposix \
> > -lpcre -Wl,-Bdynamic -L/tmp/staticlibssl/lib -ldl
> >
> > As you can see, -lssl and -lcrypto are looked up in your system path.
>  
> Ok, but what I don't get is why does it work on some system and not on others?
>  
> For me, on Debian and Ubuntu, it always worked fine, see this:
> 
> dynamically linked against system lib on debian squezze:
>  $ ./haproxy -vv | grep "OpenSSL version"
>  Built with OpenSSL version : OpenSSL 0.9.8o 01 Jun 2010
>  Running on OpenSSL version : OpenSSL 0.9.8o 01 Jun 2010
>  $ ldd haproxy
>          linux-gate.so.1 =>  (0xb77c7000)
>          libcrypt.so.1 => /lib/i686/cmov/libcrypt.so.1 (0xb778f000)
>          libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb7743000)
>          libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 
> (0xb75ea000)
>          libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb74a3000)
>          libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb749f000)
>          libz.so.1 => /usr/lib/libz.so.1 (0xb748b000)
>          /lib/ld-linux.so.2 (0xb77c8000)
>  $
> 
> linked to static lib on debian squezze with ADDINC/ADDLIB:
>  $ ./haproxy -vv | grep "OpenSSL version"
>  Built with OpenSSL version : OpenSSL 1.0.1e 11 Feb 2013
>  Running on OpenSSL version : OpenSSL 1.0.1e 11 Feb 2013
>  $ ldd haproxy
>          linux-gate.so.1 =>  (0xb77c2000)
>          libcrypt.so.1 => /lib/i686/cmov/libcrypt.so.1 (0xb778a000)
>          libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7786000)
>          libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb763e000)
>          /lib/ld-linux.so.2 (0xb77c3000)
>  $
> 
> 
> compiling/linking on the latter looked like this:
>  [...]
>  ebtree/ebistree.o   -lcrypt  -lssl -lcrypto -L/home/lukas/libsslbuild/lib 
> -ldl
>  [...]
>  src/haproxy-systemd-wrapper.o   -lcrypt  -lssl -lcrypto 
> -L/home/lukas/libsslbuild/lib -ldl
> 
> 
> ... and yet it compiles fine.

I must say that I have no idea in fact. It could depend on so many things!
The linker tends to be smart for us and make things work when we'd rather
have them fail, the worst thing in my opinion being that it automatically
picks .so when both .so and .a are found :-/

> > Since commit 9a05945bd0, you now have an explicit set of SSL_INC/SSL_LIB
> > variables, just like with PCRE, that you can point to your openssl
> > location.
> 
> I've seen this in git, yes. We need to update README, I will sent a patch
> about that.

Great. I remember not updating it after looking for PCRE_INC there and
seeing it was not referenced. Wrong search. I should have checked ADDINC
which was the previous way of doing it!

Thanks!
willy


Reply via email to