Hi Ralph
I'm trying to cross compile squeezeslave to a marvell 6281 arm
processor.
The compiler complains about some relocation stuff - which I've read is
due to some code is wrongfully being compiled to x86. The error message
is pasted below:
Code:
--------------------
arm-none-linux-gnueabi-gcc -I/usr/local/arm-none-linux-gnueabi/include
-L/usr/local/arm-none-linux-gnueabi/lib -s -static -o bin/squeezeslave
src/squeezeslave/squeezeslave.o src/squeezeslave/help.o
src/squeezeslave/daemonize.o src/squeezeslave/interactive.o
lib/portmixer/px_unix_oss/px_unix_oss.o lib/libportaudio.a lib/libslimproto.a
lib/libgetopt.a lib/libmad/lnx26/lib/libmad.a
lib/vorbis/lnx26/lib/libvorbisfile.a lib/vorbis/lnx26/lib/libvorbis.a
lib/vorbis/lnx26/lib/libvorbisenc.a lib/vorbis/lnx26/lib/libogg.a
lib/flac/lnx26/lib/libFLAC.a -lpthread -lm --enable-shared=no
/usr/local/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld:
lib/libportaudio.a(pa_unix.o): Relocations in generic ELF (EM: 3)
lib/libportaudio.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [bin/squeezeslave] Error 1
--------------------
The toolchain has been downloaded from
sourceforge.net/projects/dsgpl/files/ and unpacked using this command:
tar zxpf gcc421_glibc25_88f6281.tgz C /usr/local/
The makefile I'm using is a slightly modified mipsel makefile:
Code:
--------------------
#
# makefile.linux26 for ds109 by jonask
#
# export PATH
PATH:=/usr/local/arm-none-linux-gnueabi/bin:$(PATH)
export PATH
# Linux 2.6.24 MARVELL 6281 ARM
OS=lnx26
CC=arm-none-linux-gnueabi-gcc
CXX=arm-none-linux-gnueabi-g++
CPP=arm-none-linux-gnueabi-cpp
RANLIB=arm-none-linux-gnueabi-ranlib
AR=arm-none-linux-gnueabi-ar
LD=arm-none-linux-gnueabi-ld
TAR=tar
SED=sed
SHELL=/bin/bash
PATCH=patch
CFLAGS=-I/usr/local/arm-none-linux-gnueabi/include
LDFLAGS=-L/usr/local/arm-none-linux-gnueabi/lib -s -static
INCLUDE=-Ilib/getopt -Ilib/portaudio/pa_common -Ilib/portaudio/pablio
-Ilib/portmixer/px_common -Isrc -Ilib/libmad/$(OS)/include
-Ilib/vorbis/$(OS)/include -Ilib/flac/$(OS)/include
PORTAUDIOFILES:=lib/portaudio/pa_unix_oss/pa_unix.c
lib/portaudio/pa_unix_oss/pa_unix_oss.c lib/portaudio/pa_common/pa_lib.c
lib/portaudio/pa_common/pa_convert.c lib/portaudio/pablio/ringbuffer.c
LIBMAD=libmad-0.15.1b
LIBOGG=libogg-1.2.0
LIBVORBIS=libvorbis-1.3.1
LIBFLAC=flac-1.2.1
PORTMIXERFILES:=lib/portmixer/px_unix_oss/px_unix_oss.c
GETOPTFILES=lib/getopt/getopt.c lib/getopt/getopt1.c
SLIMPROTOFILES:=src/slimaudio/slimaudio_http.c
src/slimaudio/slimaudio_decoder.c src/slimaudio/slimaudio_decoder_flac.c
src/slimaudio/slimaudio_decoder_mad.c src/slimaudio/slimaudio_decoder_vorbis.c
src/slimaudio/slimaudio_decoder_pcm.c src/slimaudio/slimaudio_output.c
src/slimaudio/slimaudio_buffer.c src/slimaudio/slimaudio.c
src/slimproto/slimproto.c
SQUEEZESLAVEFILES:=src/squeezeslave/squeezeslave.c src/squeezeslave/help.c
src/squeezeslave/daemonize.c src/squeezeslave/interactive.c
LIBPORTAUDIO=lib/libportaudio.a
LIBSLIMPROTO=lib/libslimproto.a
LIBGETOPT=lib/libgetopt.a
SUPPORTLIBS=lib/libmad/$(OS)/lib/libmad.a
lib/vorbis/$(OS)/lib/libvorbisfile.a lib/vorbis/$(OS)/lib/libvorbis.a
lib/vorbis/$(OS)/lib/libvorbisenc.a lib/vorbis/$(OS)/lib/libogg.a
lib/flac/$(OS)/lib/libFLAC.a
SQUEEZESLAVE=bin/squeezeslave
.c.o:
$(CC) $(CFLAGS) $(LDFLAGS) -b arm-linux-gnu -c $(INCLUDE) $< -o $*.o
all: $(SUPPORTLIBS) $(SQUEEZESLAVE)
lib/libmad/$(OS)/lib/libmad.a:
cd lib/libmad/$(OS)/build && ${TAR} --bzip -xf
../../../../sources/$(LIBMAD).tar.bz2
cd lib/libmad/$(OS)/build && ${PATCH} -p0 -i
../../../../patches/libmad-forcemem.patch
# cd lib/libmad/$(OS)/build/$(LIBMAD) && CC="$(CC)"
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure
--enable-shared=no --enable-fpm=intel
cd lib/libmad/$(OS)/build/$(LIBMAD) && CC="$(CC)" CXXCPP="$(CPP)"
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure
--enable-shared=no --enable-fpm=arm --host=armle-unknown-linux
--target=armle-unknown-linux --build=i686-pc-linux --prefix=/usr/local
cd lib/libmad/$(OS)/build/$(LIBMAD) && make clean && make
cp -p lib/libmad/$(OS)/build/$(LIBMAD)/.libs/libmad.a
lib/libmad/$(OS)/lib
cp -p lib/libmad/$(OS)/build/$(LIBMAD)/mad.h lib/libmad/$(OS)/include
lib/vorbis/$(OS)/lib/libogg.a:
cd lib/vorbis/$(OS)/build && ${TAR} --bzip -xf
../../../../sources/$(LIBOGG).tar.bz2
# cd lib/vorbis/$(OS)/build/$(LIBOGG) && CC="$(CC)"
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure
--enable-shared=no
cd lib/vorbis/$(OS)/build/$(LIBOGG) && CC="$(CC)" CXXCPP="$(CPP)"
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure
--enable-shared=no --host=armle-unknown-linux --target=armle-unknown-linux
--build=i686-pc-linux --prefix=/usr/local
cd lib/vorbis/$(OS)/build/$(LIBOGG) && make clean && make
cp -p lib/vorbis/$(OS)/build/$(LIBOGG)/src/.libs/libogg.a
lib/vorbis/$(OS)/lib
cp -p
lib/vorbis/$(OS)/build/$(LIBOGG)/include/ogg/{ogg.h,os_types.h,config_types.h}
lib/vorbis/$(OS)/include/ogg
lib/vorbis/$(OS)/lib/libvorbisfile.a: lib/vorbis/$(OS)/lib/libogg.a
lib/vorbis/$(OS)/lib/libvorbisenc.a: lib/vorbis/$(OS)/lib/libogg.a
lib/vorbis/$(OS)/lib/libvorbis.a: lib/vorbis/$(OS)/lib/libogg.a
cd lib/vorbis/$(OS)/build && ${TAR} --bzip -xf
../../../../sources/$(LIBVORBIS).tar.bz2
cd lib/vorbis/$(OS)/build/$(LIBVORBIS) && $(SED) -i "s/-mno-ieee-fp//g"
configure
# cd lib/vorbis/$(OS)/build/$(LIBVORBIS) && CC="$(CC)"
OGG_CFLAGS=-I`pwd`/../../include OGG_LIBS=`pwd`/../../lib/libogg.a
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS) ${OGG_LIBS}"
./configure --enable-shared=no
cd lib/vorbis/$(OS)/build/$(LIBVORBIS) && CC="$(CC)" CXXCPP="$(CPP)"
OGG_CFLAGS=-I`pwd`/../../include OGG_LIBS=`pwd`/../../lib/libogg.a
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS) ${OGG_LIBS}"
./configure --enable-shared=no --host=armle-unknown-linux
--target=armle-unknown-linux --build=i686-pc-linux --prefix=/usr/local
cd lib/vorbis/$(OS)/build/$(LIBVORBIS) && $(SED) -i "s:^LIBS =.*:LIBS =
`pwd`/../../lib/libogg.a:" examples/Makefile
cd lib/vorbis/$(OS)/build/$(LIBVORBIS) && make clean && make
cp -p
lib/vorbis/$(OS)/build/$(LIBVORBIS)/lib/.libs/{libvorbis.a,libvorbisenc.a,libvorbisfile.a}
lib/vorbis/$(OS)/lib
cp -p
lib/vorbis/$(OS)/build/$(LIBVORBIS)/include/vorbis/{codec.h,vorbisenc.h,vorbisfile.h}
lib/vorbis/$(OS)/include/vorbis
lib/flac/$(OS)/lib/libFLAC.a: lib/vorbis/$(OS)/lib/libogg.a
cd lib/flac/$(OS)/build && ${TAR} --bzip -xf
../../../../sources/$(LIBFLAC).tar.bz2
# cd lib/flac/$(OS)/build/$(LIBFLAC) && CC="$(CC)"
OGG_CFLAGS=-I`pwd`/../../include OGG_LIBS=`pwd`/../../lib/libogg.a
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS) ${OGG_LIBS}"
./configure --enable-shared=no --disable-oggtest
--with-ogg-libraries=`pwd`/../../../../vorbis/$(OS)/lib
--with-ogg-includes=`pwd`/../../../../vorbis/$(OS)/include
cd lib/flac/$(OS)/build/$(LIBFLAC) && CC="$(CC)" CXXCPP="$(CPP)"
OGG_CFLAGS=-I`pwd`/../../include OGG_LIBS=`pwd`/../../lib/libogg.a
CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS) ${OGG_LIBS}"
./configure --enable-shared=no --disable-oggtest
--with-ogg-libraries=`pwd`/../../../../vorbis/$(OS)/lib
--with-ogg-includes=`pwd`/../../../../vorbis/$(OS)/include
--host=armle-unknown-linux --target=armle-unknown-linux --build=i686-pc-linux
--prefix=/usr/local
cd lib/flac/$(OS)/build/$(LIBFLAC)/src/libFLAC && make clean && make
cp -p lib/flac/$(OS)/build/$(LIBFLAC)/src/libFLAC/.libs/libFLAC.a
lib/flac/$(OS)/lib
cp -p
lib/flac/$(OS)/build/$(LIBFLAC)/include/FLAC/{all.h,export.h,ordinals.h,assert.h,format.h,stream_decoder.h,callback.h,metadata.h,stream_encoder.h}
lib/flac/$(OS)/include/FLAC
$(LIBPORTAUDIO): $(PORTAUDIOFILES:.c=.o)
$(AR) -cru $(LIBPORTAUDIO) $^
$(RANLIB) $(LIBPORTAUDIO)
$(LIBSLIMPROTO): $(SLIMPROTOFILES:.c=.o)
$(AR) -cru $(LIBSLIMPROTO) $^
$(RANLIB) $(LIBSLIMPROTO)
$(LIBGETOPT): $(GETOPTFILES:.c=.o)
$(AR) -cru $(LIBGETOPT) $^
$(RANLIB) $(LIBGETOPT)
$(SQUEEZESLAVE): $(SQUEEZESLAVEFILES:.c=.o) $(PORTMIXERFILES:.c=.o)
$(LIBPORTAUDIO) $(LIBSLIMPROTO) $(LIBGETOPT) $(SUPPORTLIBS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $(SQUEEZESLAVE) $^ -lpthread -lm
--enable-shared=no
clean:
-...@rm -f $(SLIMPROTOFILES:.c=.o)
-...@rm -f $(SQUEEZESLAVEFILES:.c=.o)
-...@rm -f $(PORTMIXERFILES:.c=.o)
-...@rm -f $(GETOPTFILES:.c=.o)
-...@rm -f $(LIBPORTAUDIO)
-...@rm -f $(LIBSLIMPROTO)
-...@rm -f $(LIBGETOPT)
-...@rm -f $(SQUEEZESLAVE)
realclean: clean
-...@rm -rf lib/libmad/$(OS)/build/$(LIBMAD)
-...@rm -rf lib/vorbis/$(OS)/build/$(LIBOGG)
-...@rm -rf lib/vorbis/$(OS)/build/$(LIBVORBIS)
-...@rm -rf lib/flac/$(OS)/build/$(LIBFLAC)
-...@rm -f lib/libmad/$(OS)/lib/libmad.a lib/libmad/$(OS)/include/mad.h
-...@rm -f lib/vorbis/$(OS)/lib/libogg.a
lib/vorbis/$(OS)/include/ogg/{ogg.h,os_types.h,config_types.h}
-...@rm -f
lib/vorbis/$(OS)/lib/{libvorbis.a,libvorbisenc.a,libvorbisfile.a}
-...@rm -f
lib/vorbis/$(OS)/include/vorbis/{codec.h,vorbisenc.h,vorbisfile.h}
-...@rm -f lib/flac/$(OS)/lib/libFLAC.a
-...@rm -f
lib/flac/$(OS)/include/FLAC/{all.h,export.h,ordinals.h,assert.h,format.h,stream_decoder.h,callback.h,metadata.h,stream_encoder.h}
--------------------
I'm out of ideas right now. Can you (or anyone with experience in
cross-compiling) help me?
regards Jonas
--
Jonas K
------------------------------------------------------------------------
Jonas K's Profile: http://forums.slimdevices.com/member.php?userid=39432
View this thread: http://forums.slimdevices.com/showthread.php?t=63966
_______________________________________________
discuss mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/discuss