Libtool claims that it does not support shared libraries during cross-compilation

I am trying to create an expat (2.0.0) XML parsing library for an embedded ARM machine working with busybox 1.13, while in time. / configure I get an error message:

checking if libtool supports shared libraries... no 

I pointed my gcc, g ++, ar, ranlib, strip, etc., and they are all found in the configure tool, and I have the most recent libtool (2.4.2 at the time of this writing) on โ€‹โ€‹Ubuntu 12.10, so why Does he say libtool does not support shared libraries? My configure command:

 ./configure --host=arm --enable-shared CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip 

... and complete call output:

  configure: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used. checking build system type... i686-pc-linux-gnu checking host system type... arm-unknown-none checking for arm-gcc... arm-none-linux-gnueabi-gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... yes checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether arm-none-linux-gnueabi-gcc accepts -g... yes checking for arm-none-linux-gnueabi-gcc option to accept ANSI C... none needed checking for a sed that does not truncate output... /bin/sed checking for egrep... grep -E checking for ld used by arm-none-linux-gnueabi-gcc... /usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld checking if the linker (/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld) is GNU ld... yes checking for /usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld option to reload object files... -r checking for BSD-compatible nm... nm checking whether ln -s works... yes checking how to recognise dependent libraries... unknown checking how to run the C preprocessor... arm-none-linux-gnueabi-gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for arm-g++... arm-none-linux-gnueabi-g++ checking whether we are using the GNU C++ compiler... yes checking whether arm-none-linux-gnueabi-g++ accepts -g... yes checking how to run the C++ preprocessor... arm-none-linux-gnueabi-g++ -E checking for arm-g77... no checking for arm-f77... no checking for arm-xlf... no checking for arm-frt... no checking for arm-pgf77... no checking for arm-fort77... no checking for arm-fl32... no checking for arm-af77... no checking for arm-f90... no checking for arm-xlf90... no checking for arm-pgf90... no checking for arm-epcf90... no checking for arm-f95... no checking for arm-fort... no checking for arm-xlf95... no checking for arm-ifc... no checking for arm-efc... no checking for arm-pgf95... no checking for arm-lf95... no checking for arm-gfortran... no checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for epcf90... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for gfortran... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse nm output from arm-none-linux-gnueabi-gcc object... ok checking for objdir... .libs checking for arm-ar... arm-none-linux-gnueabi-ar checking for arm-ranlib... arm-none-linux-gnueabi-ranlib checking for arm-strip... arm-none-linux-gnueabi-strip checking if arm-none-linux-gnueabi-gcc supports -fno-rtti -fno-exceptions... no checking for arm-none-linux-gnueabi-gcc option to produce PIC... -fPIC checking if arm-none-linux-gnueabi-gcc PIC flag -fPIC works... yes checking if arm-none-linux-gnueabi-gcc static flag -static works... yes checking if arm-none-linux-gnueabi-gcc supports -c -o file.o... yes checking whether the arm-none-linux-gnueabi-gcc linker (/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... no checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... no checking whether to build shared libraries... no checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by arm-none-linux-gnueabi-g++... /usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld checking if the linker (/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld) is GNU ld... yes checking whether the arm-none-linux-gnueabi-g++ linker (/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld) supports shared libraries... no checking for arm-none-linux-gnueabi-g++ option to produce PIC... -fPIC checking if arm-none-linux-gnueabi-g++ PIC flag -fPIC works... yes checking if arm-none-linux-gnueabi-g++ static flag -static works... yes checking if arm-none-linux-gnueabi-g++ supports -c -o file.o... yes checking whether the arm-none-linux-gnueabi-g++ linker (/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/bin/ld) supports shared libraries... no checking dynamic linker characteristics... no checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for arm-gcc... (cached) arm-none-linux-gnueabi-gcc checking whether we are using the GNU C compiler... (cached) yes checking whether arm-none-linux-gnueabi-gcc accepts -g... (cached) yes checking for arm-none-linux-gnueabi-gcc option to accept ANSI C... (cached) none needed checking for a BSD-compatible install... /usr/bin/install -c checking whether gcc accepts -fexceptions... yes checking for ANSI C header files... (cached) yes checking whether byte ordering is bigendian... no checking for an ANSI C-conforming const... yes checking for size_t... yes checking for memmove... yes checking for bcopy... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking for unistd.h... (cached) yes checking for off_t... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for getpagesize... yes checking for working mmap... no checking for an ANSI C99-conforming __func__... yes configure: creating ./config.status config.status: creating Makefile config.status: creating expat_config.h amarshall3@pg-oj-amarshall3:~/Sandbox/expat-2.0.0$ make /bin/bash ./libtool --silent --mode=compile arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o lib/xmlparse.lo -c lib/xmlparse.c /bin/bash ./libtool --silent --mode=compile arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o lib/xmltok.lo -c lib/xmltok.c /bin/bash ./libtool --silent --mode=compile arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o lib/xmlrole.lo -c lib/xmlrole.c /bin/bash ./libtool --silent --mode=link arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -no-undefined -version-info 6:0:5 -rpath /usr/local/lib -o libexpat.la lib/xmlparse.lo lib/xmltok.lo lib/xmlrole.lo arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o xmlwf/xmlwf.o -c xmlwf/xmlwf.c arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o xmlwf/xmlfile.o -c xmlwf/xmlfile.c arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o xmlwf/codepage.o -c xmlwf/codepage.c arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o xmlwf/readfilemap.o -c xmlwf/readfilemap.c xmlwf/readfilemap.c: In function 'filemap': xmlwf/readfilemap.c:65: warning: implicit declaration of function 'read' xmlwf/readfilemap.c:69: warning: implicit declaration of function 'close' /bin/bash ./libtool --silent --mode=link arm-none-linux-gnueabi-gcc -I./lib -I. -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions -DHAVE_EXPAT_CONFIG_H -o xmlwf/xmlwf xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o xmlwf/readfilemap.o libexpat.la 

Can someone explain to me how configure determines if libtool supports the creation of shared libraries?

+8
arm cross-compiling libtool expat-parser
source share
2 answers

At the exit:

 checking build system type ... i686-pc-linux-gnu
 checking host system type ... arm-unknown-none
 ...
 checking whether the arm-none-linux-gnueabi-gcc linker (/ usr / local / arm / arm-2007q1 / arm-none-linux-gnueabi / bin / ld) supports shared libraries ... yes
 ...
 checking if libtool supports shared libraries ... no
 checking whether to build shared libraries ... no
 checking whether to build static libraries ... yes

Probably libtool is confused by your host flag: --host=arm , which in libtool matches --host=arm-unknown-none . Instead, try --host=arm-none-linux . IIRC, arm-unknown-none used by people who want to use material such as non-RTOS (main loop) for MCUs and other integrated cards where there is no OS, and everything is statically connected to the image. Your toolchain is built for Linux: arm-none-linux .

+17
source share

If you use Homebrew as a package manager, keep in mind that some formulas pour out of bottles that compiled up to 32 bits as the lowest common denominator. You can rebuild libtool into your own architecture using

$ brew install --build-from-source libtool`

or simply by passing any valid flags

$ brew install --universal libtool

Most formulas have the --universal flag, which will generate the i386 and x86_64 architectures.

0
source share

All Articles