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
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'.
*** This bug has been marked as a duplicate of bug 157778 ***
(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.