View previous topic :: View next topic |
Author |
Message |
kevintshaver n00b
Joined: 14 Feb 2006 Posts: 49
|
Posted: Sun Mar 10, 2013 9:11 pm Post subject: help with crossdev [solved] |
|
|
[quote]I'm trying to cross compile packages for arm on my x86 system. I followed this guide:
http://www.gentoo.org/proj/en/base/embedded/cross-development.xml
Everything seems to go pretty well. I ran to test it out and it finished w/o error. Now, can someone help me figure out how to get the pci-utils package moved over to the arm machine? I set PKGDIR variable on the host machine's make.conf in /usr/armv6j-hardfloat-linux-gnueabi/etc/make.conf to Quote: | PKGDIR="/usr/armv6j-hardfloat-linux-gnueabi/bpackages"[/code] but it ignores this and creates pciutils-3.1.10.tbz2 in /usr/armv6j-hardfloat-linux-gnueabi/packages/sys-apps. Any idea why my PKGDIR isn't working?
Also, I copy this package file over to the arm machine and try running Code: | emerge -pKv pciutils | and I get Code: | emerge: there are no ebuilds to satisfy "pciutils". | I've tried saving the tbz2 file in /usr/portage/packages, /usr/portage/pacakges/All, /usr/portage/packages/sys-apps, and /bpackages. On the arm machine I have /etc/make.conf PKGDIR set to /bpackages. |
Last edited by kevintshaver on Mon Mar 11, 2013 7:49 pm; edited 1 time in total |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54596 Location: 56N 3W
|
Posted: Sun Mar 10, 2013 9:34 pm Post subject: |
|
|
kevintshaver,
How are you getting a portage tree on your ARM ?
The emerge error says at least a part of it is missing, it mentions the ebuild, not the binary package.
You can make your x86 box a BINHOST, to serve the ARM packages, or set up NFS, or use scp or rsync ....
I think Quote: | ... make.conf in /usr/armv6j-hardfloat-linux-gnueabi/etc/make.conf ... | is ignored. It needs to be in /usr/armv6j-hardfloat-linux-gnueabi/etc/portage/make.conf
Note the ../portage/ in the path.
There is another gotcha for cross complied packages. The cross compiled packages look for ldd with the wrong name. You need to add a symlink to fix it.
Code: | $ ls /lib/ld* -l
-rwxr-xr-x 1 root root 134248 Nov 3 20:26 /lib/ld-2.16.so
lrwxrwxrwx 1 root root 10 Nov 3 20:32 /lib/ld-linux-armhf.so.3 -> ld-2.16.so
lrwxrwxrwx 1 root root 19 Nov 3 20:31 /lib/ld-linux.so.3 -> ld-linux-armhf.so.3 | On my Raspberry Pi, the native build system uses /lib/ld-linux-armhf.so.3 but my amd64 build box plants /lib/ld-linux.so.3. I'm not sure if thats a feature or a bug. The error message you get for that is very misleading.
lspci on a Pi is not very interesting as it doesn't have a PCI bus. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
kevintshaver n00b
Joined: 14 Feb 2006 Posts: 49
|
Posted: Sun Mar 10, 2013 10:36 pm Post subject: |
|
|
Thanks for the fast feedback Seagoon. The portage tree is all setup. I can install it no problem if I just do . It's only when I try to do the install from the binary that it can't find the package. I know lspci is not that important (apparently completely non-relevant on Raspberry Pi), I'm just using it cause its quick to test the process out.
Quote: | You can make your x86 box a BINHOST, to serve the ARM packages, or set up NFS, or use scp or rsync .... |
I will eventually set up the BINHOST but can you explain more on using scp or NFS? I don't see how I can tell emerge the location of the binary other than setting PKGDIR in make.conf. I did use scp to transfer over the file pciutils-3.1.10.tbz2 from host to RPi. I just can't seem to get the system to look for it in the correct location.
You were right about make.conf at /usr/armv6j-hardfloat-linux-gnueabi/etc/make.conf being ignored. I moved it and now it's being used by emerge. I can flip use flags. So the host is all set, just can't get the binary package installed on the target. |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54596 Location: 56N 3W
|
Posted: Sun Mar 10, 2013 11:09 pm Post subject: |
|
|
kevintshaver,
emerge --info
On my Pi PKGDIR="/usr/packages" works
armv6j-hardfloat-linux-gnueabi-emerge --info
Its matched by PKGDIR="/usr/armv6j-hardfloat-linux-gnueabi/packages/" on my build host.
That contains Code: | # ls "/usr/armv6j-hardfloat-linux-gnueabi/packages/"
Packages app-text media-fonts net-misc sys-kernel x11-libs
app-admin dev-db media-gfx net-nds sys-libs x11-misc
app-arch dev-lang media-libs perl-core sys-process x11-proto
app-dicts dev-libs media-sound sci-libs virtual x11-terms
app-editors dev-perl net-fs sys-apps www-servers x11-themes
app-misc dev-python net-irc sys-auth x11-apps x11-wm
app-portage dev-util net-libs sys-devel x11-base
app-shells mail-mta net-mail sys-fs x11-drivers |
You certainly need the directory structure and you probably need the Packages file too. Each dir contains the binary packages.
You will hate pure cross compiling as many things won't build. A good compromise is to install distcc on the Pi and the build host.
Run the distccd on the build host, so it listens put distcc in FEATURES on the Pi, then tell the Pi Code: | pump emerge <package> |
You need identical versions of gcc on the Pi and for your cross compiler, but you can cross compile gcc for the Pi.
My Pi runs MAKEOPTS="-j8", which is good until you come to a package tat won't use distcc.
You will die of old age building on the SD card too. Set up NFS or a USB hard drive for everything except /boot. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
kevintshaver n00b
Joined: 14 Feb 2006 Posts: 49
|
Posted: Mon Mar 11, 2013 7:48 pm Post subject: |
|
|
OK, thanks for the help on the problem and the extra tips. You got it right here:
Quote: | You certainly need the directory structure and you probably need the Packages file too. Each dir contains the binary packages. |
I emerged using buildpkg on the target and that created the Packages file and added in the sys-apps directory in my PKGDIR folder. That is all it needed, now I can emerge -K without issue as long as I add the binary to the appropriate category directory. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|