Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Jul 2006 12:55:57 +0200
From:      "Leubner, Achim" <Achim_Leubner@adaptec.com>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        freebsd-current@freebsd.org
Subject:   RE: Driver compilation for amd64
Message-ID:  <EF6AF37986D67948AD48624A3E5D93AFAA96D1@mtce2k01.adaptec.com>

next in thread | raw e-mail | index | archive | help
Thanks for your description, it works great!

Thanks,
Achim


-----Original Message-----
From: M. Warner Losh [mailto:imp@bsdimp.com]=20
Sent: Donnerstag, 6. Juli 2006 08:37
To: Leubner, Achim
Cc: freebsd-current@freebsd.org
Subject: Re: Driver compilation for amd64

In message:
<EF6AF37986D67948AD48624A3E5D93AFAA9326@mtce2k01.adaptec.com>
            "Leubner, Achim" <Achim_Leubner@adaptec.com> writes:
: Is it possible to cross-compile a driver on an i386 platform for
amd64,
: and if possible, how should I do that?=20
:=20
: Any help is greatly appreciated.

First, you must setup a cross environment:

setenv TARGET amd64
setenv TARGET_ARCH amd64
setenv MAKEOBJDIRPREFIX /somewhere/obj
cd /usr/src
make kernel-toolchain

At this point, you have two choices:

(1) use the make buildkernel target and build a kernel + modules.
    This can be streamlined with options like NO_KERNELCLEAN, etc.
    We use this at work when we're developing 'base' kernel
    functionality for the arm port we're undertaking.

(2) use the 'make buildenv' functionality.  This target puts you in a
    proper build environment to do things by hand.  You need to have
    done all the steps above, and each time you need to build stuff,
    you'll have to use the first 4 commands above followed by 'make
    buildenv'.  You can then build your module, or whatever else you
    want, since cc and friends will generate code for amd64.

I use both methods extensively for different types of development.
They work great.  I have an armenv script:

	cd $HOME/p4/imp_arm
	setenv TARGET arm
	setenv TARGET_ARCH arm
	setenv MAKEOBJDIRPREFIX $HOME/obj
	make buildenv

which pops me into an environment I can build in.  You'll need to
customize it for your environment, clearly, but it should give you the
main parts you need to do this sort of thing.

I usually go the other way: build i386 on my fast amd64 box.

Good luck

Warner





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EF6AF37986D67948AD48624A3E5D93AFAA96D1>