〜2001年11月下旬〜
更新。
比較的大きいRUBY NEWSGROUP FAQにreplyし、しかも全文引用すると、 結局自分の首を絞めることになると思うが。というかなぜ当該する記事にreplyしない? 繰り返されてるとするとbodyを送ってる途中でtimeoutしてるとか?
最近やっぱ配送が乱れてるなあ。今回の原因はrimじゃないようだ。 heliumでmailqするとまだ残ってたりするし。何が原因だろう?
どうも反応を見てるとまじめに考える人が多い。jokeだよ。
実は消してない。.htaccessで見えないようにしてるだけ。
fj.comp.lang.cから: C99には__func__があるらしい。
% cat > foo.c #include <stdio.h> const char *foo() { return __func__; } main() { printf("%s\n", foo()); } % gcc foo.c % ./a.out foo
なるほど。
[ruby-list:32475] [ruby-list:32476] の2つが今日になってやっと来た。 Daveさんのjokeでしたメールも昼になってからだったし。うーむ。
tinydnsとDHCP 3.0でDynamic DNSしたい場合はどうすればいいんだろう? googleでtinydns dynamic dns dhcpをキーに引いてみると Dynamic DNS from DHCP が見つかった。
うーむ。単にdhcpd.leasesを見張ってるだけなのか。
testingのincrementalなpatchも用意し始めたようだ。 ここ にある。
非力なmachineの代わりに高速なmachineでkernelをmakeしたいってことはよくある話だ。 できあがったらmoduleと共にtarballにしたくなるよね。 Makefileを見るとINSTALL_PATHとINSTALL_MOD_PATHを設定すればいいようだ。
実際やってみると/sbin/liloを実行しにいくのが気に入らない。 これだとrootにならないと作れないじゃん。って失敗した画面をよく見ると
+ '[' -x /home/watanabe/bin/installkernel ']'
という感じで調べている。なるほどこれを用意しとけばなんとでもなるわけか。 早速arch/i386/boot/install.shを元に~/bin/installkernelを用意した。 単に
if [ -x ~/bin/installkernel ]; then exec ~/bin/installkernel "$@"; fi if [ -x /sbin/installkernel ]; then exec /sbin/installkernel "$@"; fi
と
if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
をcomment outしただけ。これで
% mkdir ~/kernel % make install modules_install \ INSTALL_PATH=$HOME/kernel INSTALL_MOD_PATH=$HOME/kernel
と実行すれば~/kernelにインストールされるわけだ。 あとは適当にtarballを作るだけ。
VMwareのLinux上なのでまっさらな状態。 one treeにするとbinutilsもi686-pc-cygwinが外れてしまうので、 先にインストールしておく。
% tar xfv binutils-20011002-1-src.tar.bz2 --us=bzip2 % cd binutils-20011002-1 % CFLAGS=-Os ./configure --prefix=/usr/local/cygwin \ --target=i686-pc-cygwin % make % make install % cd ..
次にcygwinとgccはone treeで。
% tar xfv cygwin-1.3.5-3-src.tar.bz2 --us=bzip2 % tar xfv gcc-2.95.3-5-src.tar.bz2 --us=bzip2 % cd cygwin-1.3.5-3 % ln -s ../gcc-2.95.3-5/{gcc,libio,libstdc++} . % mkdir obj; cd obj % CFLAGS=-Os CXXFLAGS=-Os ../configure \ --prefix=/usr/local/cygwin \ --target=i686-pc-cygwin \ --enable-languages=c,c++ % make tooldir=/usr/local/cygwin (snip) In file included from .../libio/stdio/stdio.h:29, from .../winsup/cygwin/assert.cc:18: .../libio/libio.h:30: _G_config.h: No such file or directory
だめじゃん。stdio.hはそこをincludeしちゃいかんだろう。 しかもここで終わらずにmingwをmakeしに行っちゃうのも変だよね。 i686-pc-cygwin/winsup/Makefileが
$(SUBDIRS): @if cd $@ 2>/dev/null; then \ $(MAKE) all; \ fi || exit 0
となってるからか。見過ごすとこだったよ。
どうも-nostdincの後の-Iが足りないようだ。古いバージョンで試す必要があるな。
cygwin-1.3.2-1とgcc-2.95.3-5の組み合わせで試すと
Making version.o and winver.o Version 1.3.5 sh: i686-pc-cygwin-gcc: command not found i686-pc-cygwin-windres: no resources make[2]: *** [winver_stamp] Error 1
といつものとこでこけるので、昨日のとこは無事に通っていることがわかる。 winsup/Makefile.commonが怪しいとあたりをつけ、 これだけ1.3.2-1のものと取り替えてみる。ビンゴ。 diffを取ってみると
ifeq (,${findstring $(newlib_source)/libc/include,$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)}) newlib_include:=-I$(newlib_source)/libc/include endif
という感じで、 $(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)のいずれかになかったら追加したかったようだ。 でも、実際は-nostdinc++ -nostdincで無効になってしまうので、 必ずnewlib_includeを足す必要がある。こっちは-nostdinc++ -nostdincの後にあるので有効。
もっと簡単にしてみると
CC=gcc -I/path/to/include ifeq (,${findstring /path/to,$(CC)}) newlib_include:=-I/path/to/include endif COMPILE_CC=$(CC) -nostdinc $(newlib_include)
という感じになっている。これでは/path/to/includeが結局含まれない。 -nostdincがそれより前で指定した-Iをご破算にしてしまうからだ。
てゆか、これじゃcygwin1.dllを作れないと思うんだけど、どうやって作ってるんだ?
最終的には この変更 と、 windres問題のために~/binにdummyのi686-pc-cygwin-gccを用意した。 なぜかクロスのときはw32api/へ分割しないようになっているけど、 分けないと-mno-cygwin指定時に困ったことになるのでその対策も入っている。
% ln -s =gcc ~/bin/i686-pc-cygwin-gcc % make -e tooldir=/usr/local/cygwin \ T_CPPFLAGS='-DCYGWIN_CROSS_DIR=\"/usr/local/cygwin\"' % make -e tooldir=/usr/local/cygwin \ T_CPPFLAGS='-DCYGWIN_CROSS_DIR=\"/usr/local/cygwin\"' install % rm ~/bin/i686-pc-cygwin-gcc
なぜか1巻が無料だったので借りる。 まんまとレンタルビデオ屋の策略にはまったようだ。 X-Files 8も6巻まで見てしまったのでちょうどいいか。
鈴木あみとか去年の今頃はまだいたんだなあ。なつかしい。
2.4.15はなんかかなりまずいらしい。
更新。
いきなりクロスの環境の説明があるあたり期待できそう?
入れてみた。まずはfileutils 4.1で試そうと思うんだけど、 なかなかうまくいかない。 だましだましmakeを通してみたが、dfだけは
./df: cannot read table of mounted filesystems
となってしまう。あとで調べよう。
strip後のサイズは、
% ls -l ls -rwxr-xr-x 1 watanabe ruby 69344 Nov 26 00:43 ls
とかなり小さい。もちろん
% ldd ls not a dynamic executable
だ。glibcをstaticにlinkしたものは
% upx -l /bin/ls Ultimate Packer for eXecutables Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 UPX 1.07 Markus F.X.J. Oberhumer & Laszlo Molnar Feb 20th 2001 File size Ratio Format Name -------------------- ------ ----------- ----------- 440084 -> 192398 43.71% linux/386 /bin/ls
と段違いだ。
printfを使うと怒られてしまう。
% printf '#include <stdio.h>\nmain(){printf("hello\\n");}\n' >foo.c % diet gcc foo.c /opt/diet/lib-i386/libc.a(vprintf.o): In function `vprintf': vprintf.o(.text+0x52): warning: the printf functions add several kilobytes of bloat.
stdioも使うと怒られる。なかなか面白い。
更新。速いマシンでtarballを作ってみた。 が、owner/groupがwatanabe/rubyじゃ文句言われちゃって全然だめだ。 つうわけで、tarballを作るときに
--owner=root --group=root
を追加。
他のマシンでmakeするとvmware-config.plできなくなるので、 ソースだけ展開してmake symlinksしておく。 でも、これだけだとversion.hがないと言われてまだだめ。
The path "/usr/src/linux/include" is a kernel header file directory, but it does not contain the file "linux/version.h" as expected. This can happen if the kernel has never been built, or if you have invoked the "make mrproper" command in your kernel directory. In any case, you may want to rebuild your kernel.
make oldconfig depも必要だ。ひょっとしたら
make symlinks include/linux/version.h
だけでもいいのかな?
うーむ。 [ruby-list:32588] , [ruby-list:32591] が来ない。っておれの書いたメールだけなぜに?
今日は出なかった。まつもとさんは29,30と東京らしいのでやっぱ来月か?
-wの状態だったので、+wした。
RegisterEventSource, ReportEvent, DeregisterEvnetSourceってな感じ。 syslog.ccは400行程度なのでちらっと見てください。
更新。
おぉ。勘違いでしたね。 emacs-w3mと言えば、JとKがw3mと逆なのがすごく気になる。
cygwinとmingw32ではdefaultが--enable-sharedでi386固定とした。 i386にするのはs/i.86/i386/するだけだから簡単だが、 --enable-sharedをdefaultにするにはどうすればいいのか? 単に
enable_shared=yes
と予め設定しとけばいいかというと、これだと--enable-shared固定になってしまう。 --disable-sharedしてもここでyesになってしまう。 つまり、--disable-sharedを指定した場合、 それ以前にenable_sharedは設定されているわけで、
if [ x"$enable_shared" = x ]; then enable_shared=yes end
としないといけない。というわけで
: ${enable_shared=yes}
となっている。あ、
: ${enable_shared:=yes}
のほうがいいのかもしれない。
ったく、どうなってんだよ?調べると アナウンス があった。
○発生原因: 以下の状況が重なるためのメールサーバの高負荷 ・お客様宛に頻繁に無差別大量メールが着信していること ・「BADTRANS.B」「Aliz」などのウィルス氾濫により、お客様宛に 頻繁にウィルスメールが着信していること このため、サーバの処理能力を超え、配送待ちメールが多数に上り、 遅延が発生いたしております。
まったく。Outlookなんか捨てろよ。 無差別大量メールに関しては 21日 にもあるから、しばらくは続くのか?
で、例によって [ruby-dev:15324] が来ない。 なぜおれのメールが集中して遅れる?