From owner-FreeBSD-users-jp@jp.FreeBSD.org Thu Jul 29 07:25:27 2004
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id i6SMPRi93912;
	Thu, 29 Jul 2004 07:25:27 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from ns.crs.co.jp (ns.crs.co.jp [202.214.152.13])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id i6SMPQ893907
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Thu, 29 Jul 2004 07:25:26 +0900 (JST)
	(envelope-from ta.nakamura@crs.co.jp)
Received: from inns.ycc.crs.co.jp ([192.168.30.202])
	by ns.crs.co.jp (8.11.3/8.11.3) with ESMTP id i6SMPJs05618;
	Thu, 29 Jul 2004 07:25:19 +0900
Received: from [192.168.31.176] (localhost [127.0.0.1])
	by inns.ycc.crs.co.jp (8.11.3/8.11.3) with ESMTP id i6SMPBP17650;
	Thu, 29 Jul 2004 07:25:15 +0900
From: NAKAMURA Takeshi <ta.nakamura@crs.co.jp>
To: FreeBSD-users-jp@jp.FreeBSD.org
In-Reply-To: <4107CBB0.9090905@trio.plala.or.jp>
References: <20040728222923.12F0.1YEN@sh.rim.or.jp> <4107CBB0.9090905@trio.plala.or.jp>
X-Mailer-Plugin: AntiSpam for Becky!2 Ver.1.100
Message-Id: <20040729021127.12FD.TA.NAKAMURA@crs.co.jp>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
X-Mailer: Becky! ver. 2.10.04 [ja]
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Thu, 29 Jul 2004 07:25:14 +0900
X-Sequence: FreeBSD-users-jp 80374
Subject: [FreeBSD-users-jp 80374] Re: Intel C/C++/fortran compiler  nowproducesEM64Tbinaries
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: ta.nakamura@crs.co.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+040717

$BCgB<$G$9(B


On Thu, 29 Jul 2004 00:52:16 +0900,
 Eitarou Kamo <e-kamo@trio.plala.or.jp> wrote:

> $B!!;d$,$3$3$G8@$C$F$k$N$O(BCC$B%3%^%s%I$,@5>o=*N;$7$J$$$H$$$&$3$H$G$9!#(B
> $BDL>o(B"-E -S -c"$B%*%W%7%g%s$O$D$1$J$$$G$9$+$i!#2>$K:#2s$N>l9g(B
> $B%j%s%/$r9T$o$J$$$H(BFreeBSD$B$N%P%$%J%j!>$K$O40A4$K$O$J$i$J$$$G$9$+$i(B

[FreeBSD-users-jp 80358]$B$h$j(B
===
$B$?$@$"$J$?$,(Blibmass$B$r4^$`$$$A$^$$J*$N%+%s%?%s$J%W%m%0%i%`$r(B
$B=q$$$?$H$7$^$9!#$b$7(Blibmass.a$B$r%3%s%Q%$%k;~$KFI$_9~$^$J$$$N$J$i(B
$B!I(B-lm$B!I$N%*%W%7%g%s$r$D$1$J$/$F$b%3%s%Q%$%k$O40N;$9$k$N$G$7$g$&$+!)(B
$B;d$N7P83$G$O!"%3%s%Q%$%i$K$*$3$i$l$k$H;W$$$^$9!#%3%s%Q%$%k;~$K(B
libmass.a$B$,$J$/$F$b!I(B-lm$B!I$,$"$l$P(BOK$B$H$$$&$o$1$I$b$J$$$H;W$$$^$9!#(B
$BF0E*!&6&M-%i%$%V%i%j$OJL$G$9$1$I$b!#(B
===
 $B%3%s%Q%$%i$H$O=q$$$F$$$^$9$,!"(Bcc $B$H$O$I$3$K$b=q$$$F$J$$$H;W$$$^$9!#(B


 cc $B%3%^%s%I$O$?$@$N(B wrapper $B$G(B $B%3%s%Q%$%k$r9T$&$N$O(B cc1 $B$G$9!#(B
 cc $B%3%^%s%I$O%3%s%Q%$%i$8$c$J$$$N$G!"(Bcc $B$,@5>o=*N;$7$J$$$+$i$H8@$C$F(B
$B%3%s%Q%$%k$,=*$o$C$F$$$J$$Lu$8$c$"$j$^$;$s!#(B

gcc 3.3.3 $B$G$O(B cc $B$O0l;~%U%!%$%k$rMQ0U$7$F!"0J2<$N%W%m%0%i%`$r(B
fork $B$9$k$@$1$G$9!#(B
  $B%W%j%W%m%;%C%5(B cc1 (cpp $B$b!"(Bcc1 $B$r5/F0$9$k$@$1$G$7$?(B)
  $B%3%s%Q%$%i(B     cc1 (cc1obj: Objective-C, cc1plus: c++, f771: FORTRAN...)
  $B%"%;%s%V%i(B     as
  $B%j%s%+(B         ld
$B$H$J$C$F$$$^$9!#(B
$B%W%j%W%m%;%9$H!"%3%s%Q%$%k$O(B $B$^$H$a$F9T$C$F$$$k$h$&$G(B
   $B@h$:(B  cc1$B$r(B fork
   $B<!$K(B  as $B$r(B fork
  $B:G8e$,(B ld $B$r(B fork
$B$H$J$C$F$$$^$7$?!#(B(truss $B$G(B cc $B$rDI$$$+$13NG'$7$^$7$?(B)


% cat pi.c
#include <math.h>
main(){ printf("pi: %18.16f\n", atan(1.0L) * 4.0); }
% truss cc -o pi pi.c
...
access("/usr/libexec/cc1",1)                     = 0 (0x0)
fork()                                           = 5837 (0x16cd)  <== cc1 $B$r5/F0$7(B cc $B$O(B cc1 $B$,=*$o$k$^$GBT$D(B
SIGNAL 20   <== $B$3$3$G(B cc1 $B$O=*N;(B
...
access("/usr/bin/ld",1)                          = 0 (0x0)
fork()                                           = 5839 (0x16cf)  <== ld $B$r5/F0$7(B  cc $B$O(B ld $B$,=*$o$k$^$GBT$D(B
/var/tmp//ccdCYOeW.o: In function `main':
/var/tmp//ccdCYOeW.o(.text+0x23): undefined reference to `atan'
SIGNAL 20   <== $B$3$3$G(B ld $B=*N;(B
...
$B$H(B cc $B$,BT$C$F$$$k4V$K%(%i!<%a%C%;!<%8=P$F$$$^$9$N$G!"%a%C%;!<%8$N<g$O(B
cc $B$G$O$"$j$^$;$s!#L^O@!"(Bcc1 $B$O4{$K=*N;$7$F$$$k$N$G!"%3%s%Q%$%i(B(cc1)$B$N(B
$B%a%C%;!<%8$G$b$"$j$^$;$s!#(B


 $B$3$3$^$G$N7k2L$+$i(B cc $B$r;H$o$J$$$G<B9T%U%!%$%k$r:n@.$9$k$K$O(B
cc1, as, ld $B$r<B9T$9$l$PNI$/(B
% /usr/libexec/cc1 -o pi.s pi.c
% as -o pi.o pi.s
% ld -o pipi /usr/lib/crt1.o pi.o -lc -lm
(/usr/lib/crt1.o $B$H$$$&$N$O!"%f!<%6%i%s%I$N%"%W%j%1!<%7%g%s$KI,MW$J(B
 $B=i4|2=%k!<%A%s$r$^$H$a$?$b$N(B...$B$@$C$?$H;W$$$^$9(B)

 $B$*M7$S$H$7$F(B -l $B$rL5$/$9$H$3$s$JIw$K$b=q$1$^$9(B...
% ld -o pi /usr/lib/crt1.o pi.o /usr/lib/libc.so /usr/lib/libm.so
 -static $B$rIU$1$:$K(B static link $B$9$k$J$i(B
% ld -o pi /usr/lib/crt{1,i,n}.o pi.o /usr/lib/libc.a /usr/lib/libm.a

 fortran $B$G$b(B
% cat pi.for
      PROGRAM PI
      WRITE(*,100) ATAN(DBLE(1.0)) * 4.0
100   FORMAT ('PI: ',F18.16)
      STOP
      END
% /usr/libexec/f771 -o pi.s pi.for
$B$H$7$F!"%"%;%s%V%j$N%U%!%$%k$r=P$;$P!"$"$H$OF1$8$G$9!#(B


 cc $B$O!"(Bmeke $B$HF1$8$G!"7h$^$j@Z$C$?<j=g$N(B $B%W%j%W%m%;%9(B,$B%3%s%Q%$%k(B,$B%"%;%s%V%k(B,$B%j%s%/(B $B$,(B
$B3Z$K$J$k$h$&MQ0U$5$l$F$$$k$b$N(B $B$H$$$&$3$H$G$9!#(B


 GNU $B$NG[I[J*$G$b(B as $B$d(B ld $B$O(B `GNU Binutils' $B$KF~$C$F$*$j!"(B
`GNU Compiler Collection' $B$K$O4^$^$l$F$$$^$;$s!#(B
($B%"%;%s%V%i(B $B$d(B $B%j%s%+(B $B$O(B $B%3%s%Q%$%i(B $B$8$c$J$$(B)

 $B$3$3$^$G=q$$$F8@$&$N$b2?$G$9$,!"%j%s%+$@$m$&$H%3%s%Q%$%i$@$m$&$H(B
$B%W%j%W%m%;%C%5$@$m$&$H!"J,$+$C$F$$$l$P2?$G$bNI$$$8$c$s!#$H$O;W$$$^$9(B($B$N$G!"$3$l0J>e$O=q$-$^$;$s(B)$B!#(B


>>% ls -l /compat/linux/lib/libm*
>>-rwxr-xr-x  1 root  wheel  617058 Nov  5  2003 /compat/linux/lib/libm-2.2.4.so
>>lrwxr-xr-x  1 root  wheel      13 Feb 18 12:38 /compat/linux/lib/libm.so.6@ -> libm-2.2.4.so
>>
> $B$A$J$_$K$3$l$O(Blibmath.a$B$NBeMQJ*$K$J$k$N$G$7$g$&$+!)(B

 libmath.a $B$,2?<T$J$N$+CN$j$^$;$s$,!"(B-lm $B$r;XDj$7$?$H$-$K(B
$B%j%s%/$5$l$k$N$O(B libm.so $B$G$9!#(B($B$$$d!"(Blibm.a $B$+$b$7$l$^$;$s$,(B)
man 3 intro $B$d!"(Bman 3 math $B$r8+$F$4=jK>$N$b$N$NBeMQ$K$J$k$+D4$Y$F$/$@$5$$!#(B

 $B@h$[$I$N(B pi.c $B$G!"(Bmath liblary $B$K%j%s%/$5$;$k$H(B
% cc -o pi pi.c -lm ; ldd pi
pi:
        libm.so.2 => /lib/libm.so.2 (0x28072000)
        libc.so.5 => /lib/libc.so.5 (0x2808b000)
$B$H!"(Blibm.so.2 $B$r%j%s%/$7$^$9!#(B


> $B7k6I!"%/%m%9%3%s%Q%$%i!<$G$O$J$/!"(Bcompat/linux$B$N$&$($G$$$m$$$m4D6-$r(B
> $B@0$($?>e$GEG$1$k$H$$$&$3$H$@$C$?$s$G$9$M!#(B

 $B$=$&$$$&$3$H$G$9$M!#(B


> $B!!7k6I$N$H$3$m(Bicc$B$G$b(B`-lm'$B$O$"$k$s$G$9$+!)(B
icc $B$N(B Options Quick Reference Guide
http://www.intel.com/software/products/compilers/clin/docs/ug/lin1031.htm $B$K(B

 -Wl,o1[,o2,...] Pass options o1, o2, etc. to the linker for processing.

$B$H=q$+$l$F$$$^$9$+$i!">/$J$/$H$b(B -Wl,-lm $B$H$$$&J}K!$,;H$($^$9!#(B
 $B%^%K%e%"%k$K=q$+$l$F$$$^$;$s$,>o<1E*$K(B -lm $B$d(B -lX11 $B$H$$$&5-K!$O;H$($k$H;W$$$^$9$h!#(B

# http://www.intel.com/software/products/compilers/clin/docs/ug/lin1081.htm
# $B$K$O!"(B`See the ld man page for more information on the linker.' $B$H(B
# $B=q$+$l$F$^$9$N$G(B icc $B$K$O%j%s%+$,IU$$$FMh$J$$$H;W$C$F$$$^$9(B
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 $B4X@>2-Fl@DG/$N=8$$(B $B$,$8$^$k$N2q(B $B<jEA$$(B $B0l?M$@$1$N>!<j$K?@F`@n;YIt(B
 $BCgB<(B $BIp(B <1yen@sh.rim.or.jp>
 icc $B$r%@%&%s%m!<%I$7$h$&$H$7$?$s$G$9$,!"%@%&%s%m!<%I$K<:GT$7(B
$B:FEY$d$m$&$H;W$C$?$i(B `Each user may only obtain one non-commercial license'
