Date: Thu, 24 Jan 2002 20:53:57 +0100 From: Rahul Siddharthan <rsidd@online.fr> To: Dan Nelson <dnelson@allantgroup.com> Cc: ports@FreeBSD.ORG, hackers@FreeBSD.ORG Subject: Re: Port: Intel Fortran (and C++?) compilers Message-ID: <20020124205357.A528@lpt.ens.fr> In-Reply-To: <20020124192136.GG87583@dan.emsphone.com>; from dnelson@allantgroup.com on Thu, Jan 24, 2002 at 01:21:37PM -0600 References: <20020124184506.B87867@lpt.ens.fr> <20020124192136.GG87583@dan.emsphone.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Dan Nelson said on Jan 24, 2002 at 13:21:37:
>
> #! /bin/sh
> if [ -z "${IA32ROOT}" ] ; then
> . /compat/linux/usr/local/intel/compiler50/ia32/bin/iccvars.sh
> fi
> exec /compat/linux/usr/local/intel/compiler50/ia32/bin/icc "$@"
OK, makes sense... I was just putting the contents of iccvars.sh
directly into this script. But I happened to leave out the IA32ROOT
variable, which was the reason for a couple of the problems below.
> Then simply running (for example) "icc test.c -o test" generates a
> Linux executable.
Not for me... The reason it was not linking earlier was I forgot to
set the IA32ROOT variable. Now it links and generates an executable,
but on running it, it coredumps with "Bad system call" (even if I
brand it as linux first).
> > 2. Though the install script (with patches) installs everything to
> > /compat/linux/opt/intel, the compiler tends to complain of not finding
> > the file /usr/intel/ia32/lib/crtxn.o .
>
> I didn't have this problem. Could be a difference in how we installed
> it.
Turns out it was the missing IA32ROOT variable again.
> > Among the things the linker script needs to do are: specify the
> > entry symbol (-e main as command line option to ld); specify the Intel
> > libraries to link against; and brand the binary as linux.
>
> You could simply use /compat/linux/bin/ld here :)
That's what I do already -- it still doesn't brand the binary as
linux... the binary type is 0.
> > 4. After all this, the binary still complains saying
> >
> > ELF interpreter /compat/linux/usr/lib/libc.so.1 not found
> > Abort
> >
> > I solve this with a symlink from /compat/linux/ld-2.2.2.so to
> > /compat/linux/usr/lib/libc.so.1
> > Is there a "cleaner" solution?
>
> I didn't have this problem either.
It seems to have something to do with the fact that I link using the
linux ld. The (non-working) binary directly generated by ifc doesn't
say this.
> This is definitely dependant on what you're building. icc will try and
> use the Linux headers, so if you use FILE, or pretty much any system
> struct, it's not going to run right. Actually, what might work is "icc
> -X -I /usr/include", and then link with the freebsd ld. But icc
> doesn't understand all gcc-isms, which is why Intel had to rewrite a
> lot of them and put them in intel/compiler50/ia32/substitute_headers.
> You'de have to do the same for any offending FreeBSD headers.
True... well, the fortran port would be a good start anyway; it
doesn't have this problem, and it fills a larger hole (gcc is very
usable and feature-complete, but g77 is really pretty bad, and
moreover doesn't support Fortran 90/95...)
- Rahul.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020124205357.A528>
