From: Jun-ichiro itojun Hagino Date: 1999-08-30T16:46:46+09:00 Subject: [ruby-list:16380] Re: ruby1.4.0 on BSD/OS 4.0 ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="iso-2022-jp" Content-ID: <29220.935999189.1@coconut.itojun.org> Content-Transfer-Encoding: 7bit > > > > : 1. "-ldl" をリンクしようとしているのがおかしい > > : 2. コンパイル時 "-fPIC" オプションが付かないのがおかしい > > : 3. コンパイラとして shlicc を使わないのがおかしい > > : > > :のどれかなんでしょうか? > > > > たぶん 3 だと思います. > >configure を最後につけるパッチのように変更して > ># env CC=cc ./configure > >としたらうまく行きました. > >うーん,ずっと BSD/OS の cc は gcc とまったく同じ >だと思っていたんですが,動作が違うようです. ># man cc すると gcc のマニュアルが出てくるんだけど.. > >変更点 > CC=cc > LDFLAGS=-rdynamic -Wl,-rpath,/usr/local/lib/ruby/1.4/i386-bsdi4.0 ># パスの指定はうまい方法があるだろうと思うけど... > LDSHARED="ld -shared" > >実際は BSD/OS 3.x と 4.x を分けた方が良さそうですが, >3.x では試していないのでこれで勘弁して下さい. bsdi3は - shlicc{,2}でコンパイル+リンクするとshared libraryが使える (が、やりかたは普通とちょっと違う) - shliccはgcc 1.42ベース、shlicc2は2.7.2.1ベース - ccでコンパイルするとstatic link という風になっています。 いまanoncvsで吸ってきましたが、コンパイルが最後まで通るのは % env CC=shlicc2 ./configure % env CC=shlicc ./configure (sprintf.cに修正必要) でした。 CC=shliccの場合、末尾添付のpatchが必要です。あてても害はないので あてちゃってもいいと思います。 configure.inを読んだだけでは、 - shared library使いたくないときどうすればいいのか - with-gccあたりの制御のココロ がわからなかったので、どう修正していいのかわかりません。とりあえず 報告まで。 Makefile.inでautoconfの存在が仮定されていますね。AC_CHECK_PROGした 方がいいかも。 itojun ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <29220.935999189.2@coconut.itojun.org> Content-Transfer-Encoding: 7bit Index: sprintf.c =================================================================== RCS file: /home/cvs/ruby/sprintf.c,v retrieving revision 1.2 diff -c -r1.2 sprintf.c *** sprintf.c 1999/08/13 05:45:14 1.2 --- sprintf.c 1999/08/30 07:44:26 *************** *** 23,29 **** #ifdef USE_CWGUSI static void fmt_setup(); #else ! static void fmt_setup _((char*,char,int,int,int)); #endif static char* --- 23,29 ---- #ifdef USE_CWGUSI static void fmt_setup(); #else ! static void fmt_setup _((char*,int,int,int,int)); #endif static char* *************** *** 620,626 **** static void fmt_setup(buf, c, flags, width, prec) ! char *buf, c; int flags, width, prec; { *buf++ = '%'; --- 620,627 ---- static void fmt_setup(buf, c, flags, width, prec) ! char *buf; ! int c; int flags, width, prec; { *buf++ = '%'; ------- =_aaaaaaaaaa0--