problems with i386 jail on amd64 install 7.0 Release

Dominic Fandrey kamikaze at bsdforen.de
Fri Mar 28 14:34:06 PDT 2008


Kris Kennaway wrote:
> Mark Moellering wrote:
>> I have been trying to install an i386 jail on an amd64 install.  I 
>> added Target=i386 to the command line in the make buildworld and 
>> installworld commands.  I keep getting the following (or similar) error
> 
> 'Target' does nothing, there is no such variable.  If you meant 
> 'TARGET', that is a real variable but not the one you want.  You need to 
> add 'TARGET_ARCH=i386' to your build/installworld to successfully 
> cross-compile.
> 
> Kris

You need to mount /libexec into your jail and /usr/lib32 into the /usr/lib. 
This will get the base system in your jail working. You also need to symlink 
/usr/lib32 → /usr/lib, because it appears that is hard-coded location in 
ld-elf32.so.1.

To compile ports in the jail you have to define ARCH=i386 in the make.conf of 
the jail, because it defaults to the kernel arch amd64. This will get a lot of 
ports to compile into proper i386 binaries and libraries. But there are ports 
I have not managed to build, such as wine and perl. The binaries from the wine 
package just dump core inside my jail. I suppose wine simply interacts to 
closely with the kernel.

Why perl doesn't build, I don't know. It's my impression that some ports just 
don't manage to see the libraries they just built. I have no idea, why, though.

For some ports you have to add --host=i386 and --build=i386 to the 
CONFIGURE_ENV, because configure thinks you're trying to crosscompile and 
looks for the cross-compiling tools.



More information about the freebsd-questions mailing list