Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 272089

Summary: media-libs/gstreamer-0.10.20: build error during cross-compile for ARM arch
Product: Gentoo Linux Reporter: Sergey Mironov <ierton>
Component: Current packagesAssignee: Embedded Gentoo Team <embedded>
Status: RESOLVED DUPLICATE    
Severity: normal CC: gnome, gstreamer
Priority: High    
Version: unspecified   
Hardware: ARM   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Sergey Mironov 2009-06-01 13:50:43 UTC
media-libs/gstreamer-0.10.20: 'xmerge gstreamer' fails with link-time error

/usr/lib/libgobject-2.0.so: could not read symbols: File in wrong format

xmerge is emerge wrapper, as described in Gentoo Embedded handbook.



Reproducible: Always

Steps to Reproduce:
1. Setup cross-compile enviroment for arm as described in Gentoo Embedded handbook
2. xmerge gstreamer

Actual Results:  
emerge fails to build gstreamer. Error is "/usr/lib/libgobject-2.0.so: could not read symbols: File in wrong format".

Expected Results:  
successful build of gstreamer

Here is the last command

arm-module-linux-gnueabi-gcc -shared  .libs/libgstreamer_0.10_la-gst.o .libs/libgstreamer_0.10_la-gstobject.o 

<... tons of .lib/*.o libraries ... >

.libs/libgstreamer_0.10_la-gstmarshal.o -Wl,--whole-archive parse/.libs/libgstparse.a -Wl,--no-whole-archive  -lpthread 
/usr/lib/libgobject-2.0.so /usr/lib/libgthread-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libglib-2.0.so /usr/lib/libxml
2.so -lrt -ldl  -Wl,-O1 -pthread -Wl,-soname -Wl,libgstreamer-0.10.so.0 -Wl,-version-script -Wl,.libs/libgstreamer-0.10.
ver -o .libs/libgstreamer-0.10.so.0.17.0
/usr/lib/libgobject-2.0.so: could not read symbols: File in wrong format

I think, that linker tries to use some HOST system's libraries like libgobject.so
Comment 1 Sergey Mironov 2009-06-01 13:53:09 UTC
Here is my xmerge --info

Portage 2.1.6.11 (default/linux/arm/2008.0, gcc-4.4.0, glibc-2.8_p20080602-r1, 2.6.24-smp i686)
=================================================================
System uname: Linux-2.6.24-smp-i686-Intel-R-_Pentium-R-_4_CPU_2.60GHz-with-glibc2.0
Timestamp of tree: Tue, 19 May 2009 01:45:01 +0000
app-shells/bash:     3.2_p39
dev-java/java-config: 2.1.7
dev-lang/python:     2.4.4-r13, 2.5.4-r2
dev-python/pycrypto: 2.0.1-r8
dev-util/cmake:      2.6.2-r1
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.13, 2.63
sys-devel/automake:  1.7.9-r1, 1.9.6-r2, 1.10.2
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.23-r3
ACCEPT_KEYWORDS="arm"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-Os -pipe"
CHOST="arm-module-linux-gnueabi"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-Os -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/usr/arm-module-linux-gnueabi/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="arm minimal" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="fbdev glint mach64 mga nv r128 radeon savage sis tdfx trident 	vga voodoo"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

Comment 2 Olivier Crete (RETIRED) gentoo-dev 2009-06-01 19:18:05 UTC
I have no idea what xmerge tries to do... 
Comment 3 solar (RETIRED) gentoo-dev 2009-06-01 20:33:27 UTC
This package compiles when using crossdev-wrappers vs xmerge. 

crossdev-wrappers provides lots of per chost config.site values.
Comment 4 Sergey Mironov 2009-06-02 04:55:49 UTC
Here is my xmerge

 #!/bin/sh
 if [ ! -d "$SYSROOT" ] ; then
     echo "SYSROOT is not set" >&2
     exit -1
 fi
 export CBUILD=$(portageq envvar CHOST)
 export PORTAGE_CONFIGROOT=${SYSROOT}
 export ROOT=${SYSROOT}

 exec emerge "$@"
Comment 5 Sergey Mironov 2009-06-02 05:57:56 UTC
Ok, i found that it is not gstreamer-related bug, but libtool-related. Here is the source http://bugs.gentoo.org/262298.
Here are the similar bugs in other libs 
http://bugs.gentoo.org/show_bug.cgi?id=158040
http://bugs.gentoo.org/show_bug.cgi?id=261423

There are some (more or less ugly) workarounds 
- Temporary rename /usr/lib/libgobject.so to smth else and repeat xmerege gstreamer
- Add global LDFLAGS += -L/usr/arm-unknown-linux-gnueabi/usr/lib
- Patch the libtool


*** This bug has been marked as a duplicate of bug 262298 ***
Comment 6 Sergey Mironov 2011-03-05 00:06:05 UTC
Note: media-libs/gstreamer-0.10.31 still suffer from libtool bug. But modern crossdev-wrappers has cross-fix-root script. I launch it and re-emerge gstreamer. It builds successfully.