Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Fri, 5 Aug 2016 18:32:14 -0400
From: Assaf Gordon <assafgordon@...il.com>
To: musl@...ts.openwall.com
Subject: ./configure errors witn musl-gcc (zlib library conflict when building
 openssh)

Hello,

I'm trying to build openssh on Ubuntu with musl-gcc, and encountered a problem during "./configure" due to required library (zlib) which causes conflicts between the system's glibc and musl-libc.

There is probably a simple solution, but I couldn't find one.

The system is Ubuntu 14.04 LTS, gcc 4.8.4.
musl is 1.1.15 built from source, installed to /usr/local/musl .

First, I build zlib using musl-gcc:

      wget http://zlib.net/zlib-1.2.8.tar.gz
      tar -xf zlib-1.2.8.tar.gz
      cd zlib-1.2.8
      CC=musl-gcc ./configure
      make

This works well (note I did not install it with 'sudo make install').

Second, I try to build openssh:

     git clone https://github.com/openssh/openssh-portable
     cd openssh-portable
     autoreconf -if
     CC=musl-gcc ./configure --without-stackprotect --with-zlib=/home/ubuntu/sources/zlib-1.2.8
  
But this fails with:

     checking zlib.h usability... yes
     checking zlib.h presence... yes
     checking for zlib.h... yes
     checking for deflate in -lz... yes
     checking for possibly buggy zlib... yes
     configure: error: *** zlib too old - check config.log ***
     Your reported zlib version has known security problems.  It's possible your
     vendor has fixed these problems without changing the version number.  If you
     are sure this is the case, you can disable the check by running
     "./configure --without-zlib-version-check".
     If you are in doubt, upgrade zlib to version 1.2.3 or greater.
     See http://www.gzip.org/zlib/ for details.

The problem is not that zlib is "too old", but that the wrong shard-object is used (it uses the system's one).
 From config.log:

     configure:9002: checking for possibly buggy zlib
     configure:9041: musl-gcc -o conftest -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -I/home/ubuntu/sources/zlib-1.2.8  -L/home/ubuntu/sources/zlib-1.2.8  -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack conftest.c -lz  >&5
     configure:9041: $? = 0
     configure:9041: ./conftest
     Error relocating /lib/x86_64-linux-gnu/libz.so.1: __snprintf_chk: symbol not found
     Error relocating /lib/x86_64-linux-gnu/libz.so.1: __vsnprintf_chk: symbol not found
     configure:9041: $? = 127
     configure: program exited with status 127

If I try to force LD_LIBRARY_PATH, this messes up the entire compilation:

     $ export LD_LIBRARY_PATH="/home/ubuntu/sources/zlib-1.2.8:$LD_LIBRARY_PATH"
     $ CC=musl-gcc ./configure --without-stackprotect --with-zlib=/home/ubuntu/sources/zlib-1.2.8
     checking for gcc... musl-gcc
     checking whether the C compiler works... no
     configure: error: in `/home/ubuntu/openssh-portable':
     configure: error: C compiler cannot create executables
     See `config.log' for more details

 From 'config.log':

     configure:2963: checking whether the C compiler works
     configure:2985: musl-gcc    conftest.c  >&5
     /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libc.so: invalid ELF header
     configure:2989: $? = 1
     configure:3027: result: no


As an alternative I also tried installing zlib in /usr/local/musl/lib - but it gives the same kind of erros once LD_LIBRARY_PATH is modified.

Any suggestions are very welcomed,
thanks,
  - assaf





Powered by blists - more mailing lists

Your e-mail address:

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.