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>