user505160
user505160

Reputation: 1216

configure test with static lib

I am trying to cross compile libpng for RaspberryPi on Ubuntu 14.04 (x_64) with zlib but configure fails with

configure:11400: arm-linux-gnueabihf-gcc -o conftest -g -O2 -I/home/user/RPI_DEV/lib/include conftest.c -lz -lm >&5 /home/user/RPI_DEV/xtools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lz collect2: error: ld returned 1 exit status configure:11400: $? = 1 configure: failed program was: ....

Because I am using toolchain for arm, arm-ld cant find zlib.

Is there any option for configure not to compile with shared lib but to try with static lib (eg. -static -lz).

Command is

./configure --enable-static=true --enable-shared=false --with-zlib-include="/home/user/RPI_DEV/lib/include" --with-zlib-lib="/home/user/RPI_DEV/lib/lib" LDFLGS="-L/home/user/RPI_DEV/lib/lib" CPPFLAGS="-I/home/user/RPI_DEV/lib/include" -enable-static --host=arm-linux-gnueabihf --prefix=/home/user/RPI_DEV/lib --exec-prefix=/home/user/RPI_DEV/lib

Upvotes: 0

Views: 924

Answers (2)

John Bowler
John Bowler

Reputation: 101

You need to cross build and install zlib into your toolchain before trying to use it in another project.

What you are doing might work but only if you spell LDFLAGS correctly:

LDFLGS="-L/home/user/RPI_DEV/lib/lib"

Note the missing 'A'. I don't know why your second attempt worked, given you had the same misspelling; possibly you had a correct LDFLAGS in your environment?

Anyway there should be a Ubuntu cross-development guide somewhere that explains how to do this. It's slightly off topic but for Gentoo you use 'crossdev' to install the toolchain then a crossdev specific version of the normal package installation mechanism ([host]-emerge) to install zlib into the toolchain.

Also, the arguments --with-zlib-include and --with-zlib-lib are not supported by any current version of libpng I can find. If you are cross-compiling libpng for an RPi (or, indeed, any ARM system) you should be using the latest version of 1.6 that you can find.

Upvotes: 1

user505160
user505160

Reputation: 1216

Unless someone solves this the RIGHT way, this is hack I've done.

  1. Open configure.ac file
  2. Find and comment out line

AC_CHECK_LIB(z, zlibVersion, , AC_ERROR([zlib not installed]))

Configure will pass wihout check for zlib and then add zlib by hand

LDFLGS="-L/home/user/RPI_DEV/lib/lib -L/home/user/RPI_DEV/lib/lib/libz.a"

  1. Run autoconf
  2. Run ./configure ...

Upvotes: 0

Related Questions