[Clc-crux64] RE: Fwd: i686 vs x86_64 on AMD64
At runtime how does the app know to use the 32 bit version of the library if the library has the same name. How and where do you install the libraries into the real system. Thanks Ron Young -----Original Message----- From: crux-bounces@fukt.bth.se [mailto:crux-bounces@fukt.bth.se]On Behalf Of Jeremy Jones Sent: Thursday, June 09, 2005 2:26 PM To: crux@fukt.bth.se Subject: Re: Fwd: i686 vs x86_64 on AMD64 Him Mans, On Thu, 2005-06-09 at 22:03 +0200, Måns Andersson wrote:
Hello I'v been using Crux for about a year at my Athlon XP-computer. But since I've updated to an AMD64 processor I wonder which port I should use. Right know I'm using the x86_64 port, but I'm having a lot of trouble whil trying to compile different packets I need. For example doesn't mplayer work out alright if I want to be able to play all codecs, I have to disable win32 to get it working, but with the loss of some codecs.
Yes, this is a problem with mplayer. Others?
I have found out that it is because of that I'm trying to compile it as an 64-bit-program instead of 32-bit as it is intended to. Therefore I have two different things to do. Either I will change back to the i686-version I've been using earlier on my AthlonXP, but I don't know if it will work out well, or will those problems continue as long as I use AMD64? The other thing I've thought about is to find out some way to compile those packets that don't work on 64-bit as 32-bit instead. But how can I do this? Is it possible?
If you have a couple hundred megs of drive space available, you can install the i686 version into a chroot environment. I do this: mkdir -p /home/jeremy/crux-i686/var/lib/pkg touch /home/jeremy/crux-i686/var/lib/pkg/db mkdir /home/jeremy/iso mount -o loop /home/jeremy/crux-2.1.iso /home/jeremy/iso cd /home/jeremy/iso/crux/base for pkg in `ls -1`; do pkgadd -r /home/jeremy/crux-i686 $pkg done cd ../opt pkgadd -r /home/jeremy/crux-i686 $pkg Then you can chroot to /home/jeremy/crux-i686, run ports -u, compile what you need, then install the package to your real system. If the binaries complain about missing libs, you can always add something like this to /etc/ld.so.conf /home/jeremy/crux-i686/lib /home/jeremy/crux-i686/usr/lib /home/jeremy/crux-i686/usr/X11R6/lib and re-run ldconfig. HOWEVER... If you don't feel like doing some work -- i.e. troubleshooting, debugging, pulling out your hair -- you might be best off with the i686 crux to begin with. I can't even promise you'll get much of a performance boost running 64-bit vs 32-bit. Never bothered to benchmark, to tell the truth. Jeremy
On Sat, 2005-06-18 at 11:47 -0700, Ron Young wrote:
At runtime how does the app know to use the 32 bit version of the library if the library has the same name.
Dunno. They do, though, at least as far as my experience goes. Seems the 32-bit app will silently ignore 64-bit libraries and continue searching through the ld library path 'til it finds what it needs. If you've installed libraries into a directory in your home, and you have the path to the libraries in your ld.so.conf, your 32-bit app should find them.
How and where do you install the libraries into the real system.
Install the libraries to your chroot environment. I have a directory in my home called crux-i686. I chroot there and build and install packages normally. Jeremy
participants (2)
-
Jeremy Jones
-
Ron Young