Date: Sat, 19 Jan 2008 20:20:03 GMT From: "Scot Hetzel" <swhetzel@gmail.com> To: freebsd-amd64@FreeBSD.org Subject: Re: amd64/119771: troubles w/ -m32 executables on both amd64 and i386 Message-ID: <200801192020.m0JKK3wg050817@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR amd64/119771; it has been noted by GNATS. From: "Scot Hetzel" <swhetzel@gmail.com> To: A.Yu.Isupov <isupov@moonhe.jinr.ru> Cc: bug-followup@freebsd.org Subject: Re: amd64/119771: troubles w/ -m32 executables on both amd64 and i386 Date: Sat, 19 Jan 2008 14:18:43 -0600 On 1/19/08, A.Yu.Isupov <isupov@moonhe.jinr.ru> wrote: > *From:* "Scot Hetzel" <swhetzel@gmail.com> > *Date:* Fri, 18 Jan 2008 10:07:26 -0600 > > >Currently, building i386 programs under FreeBSD/amd64 is not > >supported. The reason for this is you need the i386 includes to build > >your program, but they are not installed during a installworld (see > >stage 5.1 in src/Makefile.inc1). > > I assume, that all needed includes are the same under amd64 and i386... > Problems are not connected with sizeof(int) or prototyping. The includes are not the same between amd64 and i386. sys/types.h pulls in machine/endian.h and machine/_types.h. These two includes are different. That is why you would need to build the includes for i386 under amd64. An example of building the includes is in stage 5.1 of buildworld. > Unfortunately, I can't port my program (that is cernlib) to 64-bit > (I try !), because one intensively uses int (and integer*4 :) to store > pointers, so I need to compile it in 32-bit environment - if possible, > on FreeBSD/amd64, if not - I should choose to continue using the > FreeBSD/i386 on 64-bit CPU :( You would need to create a 32-bit build environment similar to how buildworld stage 5.1 build the 32-bit libraries, or install FreeBSD/i386 into its own partition/directory and build it from there. 1. Create directory to install FreeBSD/i386 into: mkdir /usr/home/build32 2. Mount FreeBSD/i386 disc1 iso mount -t cd9660 /dev/cd0 /mnt or mount -t cd9660 /dev/`mdconfig -f 6.3-RELEASE-i386-disc1.iso` /mnt 3. Install FreeBSD/i386 into /usr/home/build32 cd /mnt/6.3-RELEASE/base DESTDIR=/usr/home/build32 install.sh 4. link ld-elf.so.1 to ld-elf32.so.1 cd /usr/home/build32/libexec ln -s ld-elf.so.1 ld-elf32.so.1 cd ../usr/libexec ln -s ld-elf.so.1 ld-elf32.so.1 Now place your source some where under /usr/home/build32, then chroot /usr/home/build32. Change to the location of your sources and build your binary. Scot
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801192020.m0JKK3wg050817>