2004年3月12日(金)

ifc8 on FreeBSD

Intel の Linux 用 Fortran compiler を FreeBSD で使おうとするとリンクでコケるという件。 Fortran compiler のライブラリ libifcore.a 中に undefined な関数があるのが問題であった。 この関数は for_pause.o の中で使われている IO_putc および IO_getc で、 Linux ではこれが libc 中に存在しているが FreeBSD の libc には存在していないというあたりが原因だろう。

xxxxxxx-afs1{yagi(p5)}1050: nm /usr/compat/linux/lib/libc-2.2.4.so|grep IO_putc
0007511c T _IO_putc
xxxxxxx-afs1{yagi(p5)}1051: nm /usr/lib/libc.a |grep IO_putc                zsh
xxxxxxx-afs1{yagi(p5)}1052: uname -a                                        zsh
FreeBSD xxxxxxx-afs1.kek.jp 5.2.1-RELEASE-p1 FreeBSD 5.2.1-RELEASE-p1 #1: Wed Ma
r  3 15:52:56 JST 2004     yagi@xxxxxxx-afs1.kek.jp:/usr/obj/home3/src/sys/PIPEO
RGAN  i386

この for_pause を使わずに済めば link 問題は回避できるのかと中を見てみると 添付のようになっていて pause しなければよい/しようとすると引っかかる?

こんなもんで確かめられるんだが…。 Fortran の pause って何に使うんだっけ?(ばき)

      write(*,*) "test"
c     pause
      end

send-pr ものかのぅ…

for_pause.o:
         U _IO_getc
         U _IO_putc
         U __errno_location
         U __stdinp
         U __stdoutp
000002a6 t bg_paused
         U fflush
         U fileno
         U for__acquire_lun
00000380 d for__asynch_mask
         U for__release_lun
00000080 d for_diag_rz_msg_table
         U for_exit
00000000 T for_pause
         U fprintf
         U fputs
         U getpid
         U getsockopt
         U isatty
00000060 d lf_units.565
         U pause
         U signal
         U strncmp

[referer: [an error occurred while processing this directive]]

あわせて読みたい