Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 180827 - sys-devel/libperl won't crosscompile, tries to execute non-native binary
Summary: sys-devel/libperl won't crosscompile, tries to execute non-native binary
Status: RESOLVED DUPLICATE of bug 157778
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: Other Linux
: High major (vote)
Assignee: Gentoo Perl team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-06-04 09:34 UTC by Matt Sealey, Genesi
Modified: 2010-10-23 15:01 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Sealey, Genesi 2007-06-04 09:34:26 UTC
I've basically followed the documentation for embedded development (cross-compiling inside an x86 virtual machine towards a PowerPC uClibc (powerpc-gentoo-linux-uclibc) target)

http://www.gentoo.org/proj/en/base/embedded/cross-development.xml

I built myself a powerpc-gentoo-linux-uclibc toolchain, it all works and even
makes working binaries.

Then, basically did

xmerge --root /cross/root system

Which causes the libperl build (eventually) to complain;

===
Which of these apply? [linux]
./hints/linux.sh: line 126: ./a.out: cannot execute binary file

You don't have an ELF gcc.  I will use dld if possible. If you are
===

And so on. It goes on to say:

===

Checking your choice of C compiler and flags for coherency...
I've tried to compile and run the following simple program:

#include <stdio.h>
..

and I got the following output:


/usr/libexec/gcc/powerpc-gentoo-linux-uclibc/ld: cannot find -lgbdm
collect2: ld returned 1 exit status
I can't compile the test program
===

I believe the first error is quite prominently broken (since it shouldn't be running PPC binaries here!) and the second one worries me since it never tried to emerge libgdbm in the first place although I manually emerged it, it still doesn't find it, which I think is as these two bug:

http://bugs.gentoo.org/show_bug.cgi?id=157774
http://bugs.gentoo.org/show_bug.cgi?id=157778

Any help would be really appreciated, it's quite important that the build process can be semi-automated this way and we'd rather use Gentoo standard tools and Catalyst etc. for building our system image than making our own.

Reproducible: Always
Comment 1 Karl H 2007-06-09 19:23:04 UTC
same issue cross compiling to armeb

xmerge --root /armeb-gentoo-v2 -av perl
xmerge script  CBUILD=i686-pc-linux-gnu SYSROOT=/usr/armeb-softfloat-linux-uclibc ROOT=/armeb-gentoo-v2

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] sys-devel/libperl-5.8.8-r1 to /armeb-gentoo-v2/ USE="-berkdb -debug -gdbm -ithreads" 0 kB
[ebuild  N    ] dev-lang/perl-5.8.8-r2 to /armeb-gentoo-v2/ USE="-berkdb -build -debug -doc -gdbm -ithreads -perlsuid" 0 kB
[ebuild  N    ] perl-core/Test-Harness-2.64 to /armeb-gentoo-v2/ 70 kB
[ebuild  N    ] app-admin/perl-cleaner-1.04.3 to /armeb-gentoo-v2/ 6 kB
[ebuild  N    ] perl-core/PodParser-1.35 to /armeb-gentoo-v2/ 96 kB

Total: 5 packages (5 new), Size of downloads: 170 kB

Would you like to merge these packages? [Yes/No] y
>>> Verifying ebuild Manifests...

>>> Emerging (1 of 5) sys-devel/libperl-5.8.8-r1 to /armeb-gentoo-v2/
 * perl-5.8.8.tar.bz2 RMD160 ;-) ...                                                                                                           [ ok ]
 * perl-5.8.8.tar.bz2 SHA1 ;-) ...                                                                                                             [ ok ]
 * perl-5.8.8.tar.bz2 SHA256 ;-) ...                                                                                                           [ ok ]
 * perl-5.8.8.tar.bz2 size ;-) ...                                                                                                             [ ok ]
 * checking ebuild checksums ;-) ...                                                                                                           [ ok ]
 * checking auxfile checksums ;-) ...                                                                                                          [ ok ]
 * checking miscfile checksums ;-) ...                                                                                                         [ ok ]
 * checking perl-5.8.8.tar.bz2 ;-) ...                                                                                                         [ ok ]
>>> Unpacking source...
>>> Unpacking perl-5.8.8.tar.bz2 to /var/tmp/portage/sys-devel/libperl-5.8.8-r1/work
 * QA Notice: USE Flag 'userland_Darwin' not in IUSE for sys-devel/libperl-5.8.8-r1
 * Applying libperl-create-libperl-soname.patch ...                                                                                            [ ok ]
 * Applying libperl-noksh.patch ...                                                                                                            [ ok ]
 * Applying libperl-5.8.8-reorder-INC.patch ...                                                                                                [ ok ]
 * Applying perl-hppa-pa7200-configure.patch ...                                                                                               [ ok ]
 * Applying libperl-5.8.8-cplusplus.patch ...                                                                                                  [ ok ]
>>> Source unpacked.
>>> Compiling source in /var/tmp/portage/sys-devel/libperl-5.8.8-r1/work/perl-5.8.8 ...
 * QA Notice: USE Flag 'elibc_uclibc' not in IUSE for sys-devel/libperl-5.8.8-r1
First let's make sure your kit is complete.  Checking...
Locating common programs...
Checking compatibility between /bin/echo and builtin echo (if any)...
Symbolic links are supported.
Checking how to test for symbolic links...
You can test for symbolic links with 'test -h'.
Good, your tr supports [:lower:] and [:upper:] to convert case.
Using [:upper:] and [:lower:] to convert case.
3b1          dos_djgpp       irix_6_0      nonstopux     sunos_4_0
aix          dynix           irix_6_1      openbsd       sunos_4_1
aix_3        dynixptx        isc           opus          super-ux
aix_4        epix            isc_2         os2           svr4
altos486     esix4           linux         os390         svr5
amigaos      fps             lynxos        os400         ti1500
apollo       freebsd         machten       posix-bc      titanos
atheos       genix           machten_2     powerux       ultrix_4
aux_3        gnu             mint          qnx           umips
beos         gnukfreebsd     mips          rhapsody      unicos
bsdos        gnuknetbsd      mpc           sco           unicosmk
convexos     greenhills      mpeix         sco_2_3_0     unisysdynix
cxux         hpux            ncr_tower     sco_2_3_1     utekv
cygwin       i386            netbsd        sco_2_3_2     uts
darwin       interix         newsos4       sco_2_3_3     uwin
dcosx        irix_4          next_3        sco_2_3_4     vmesa
dec_osf      irix_5          next_3_0      solaris_2     vos
dgux         irix_6          next_4        stellar
Which of these apply, if any? [linux]
./hints/linux.sh: line 126: ./a.out: cannot execute binary file

You don't have an ELF gcc.  I will use dld if possible.  If you are
using a version of DLD earlier than 3.2.6, or don't have it at all, you
should probably upgrade. If you are forced to use 3.2.4, you should
uncomment a couple of lines in hints/linux.sh and restart Configure so
that shared libraries will be disallowed.


Disabling ndbm.  This will generate a Whoa There message in Configure.
Read hints/linux.sh for further information.
Operating system name? [linux]
Operating system version? [2.6.20-gentoo-r2]
Build Perl for SOCKS? [n]
Use the PerlIO abstraction layer? [y]
Build a threading Perl? [n]
Build Perl for multiplicity? [n]
Use which C compiler? [armeb-softfloat-linux-uclibc-gcc]
Checking for GNU cc in disguise and/or its version number...
Configure: line 3898: ./try: cannot execute binary file
Now, how can we feed standard input to your C preprocessor...
Directories to use for library searches? [/usr/local/lib /lib /usr/lib]
What is the file extension used for shared libraries? [sa]
Try to use long doubles if available? [n]
Checking for optional libraries...
What libraries to use?
[-lnsl -lndbm -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc]
What optimizer/debugger flag should be used? [-O1 -pipe -msoft-float]
Any additional cc flags? [-DOVR_DBL_DIG=14]
Let me guess what the preprocessor flags are...
Any additional ld flags (NOT including libraries)? [ -L/usr/local/lib]
Checking your choice of C compiler and flags for coherency...
I've tried to compile and run the following simple program:

#include <stdio.h>
int main() { printf("Ok\n"); return(0); }

I used the command:

        armeb-softfloat-linux-uclibc-gcc -o try -O1 -pipe -msoft-float -DOVR_DBL_DIG=14 -L/usr/local/lib try.c -lnsl -lndbm -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
         ./try

and I got the following output:

/usr/libexec/gcc/armeb-softfloat-linux-uclibc/ld: cannot find -lndbm
collect2: ld returned 1 exit status
I can't compile the test program.
You have a BIG problem.  Shall I abort Configure [y]
Ok.  Stopping Configure.

!!! ERROR: sys-devel/libperl-5.8.8-r1 failed.
Call stack:
  ebuild.sh, line 1615:   Called dyn_compile
  ebuild.sh, line 972:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  libperl-5.8.8-r1.ebuild, line 266:   Called die

!!! Unable to configure
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/sys-devel/libperl-5.8.8-r1/temp/build.log'.

Comment 2 Jakub Moc (RETIRED) gentoo-dev 2008-02-27 18:33:54 UTC

*** This bug has been marked as a duplicate of bug 157778 ***
Comment 3 Matteo 'The Peach' Pescarin 2010-10-23 15:01:28 UTC
(In reply to comment #2)
> 
> *** This bug has been marked as a duplicate of bug 157778 ***
> 

here are two different problems:
1) -lgbdm error that can be fixed with Diego's patch linked
2) execution of non-native binaries which is a complete different issue and is the title of the bugreport itself.

As far as I am aware this bug shouldn't be marked as duplicate but should try to address cross compilation issues when this kind of checks happens.