Pyon's Diary
成る可くJIS X 0213:2004對應MSフォント(5.0)、IPAフォント(003.02)で御覽下さい
2002-08-25 舊 平成拾肆年文月拾漆日 (晴) [長年日記]
天氣。
けふはとても良い天氣。とてもムカつく。
- 金曜日はビアガーデンでジンギスカンの豫定が雨でおぢやん。
- 土曜日は葛西臨海公園から日之出桟橋迄海上バスに乘ろうとすれば雨でおぢやん。
なのに何處にも行く豫定も無いけふに限つて爽やかに晴れ渡るなんてやぱしムカつく。
遠藤ケイの隠し味探訪 バックナンバー。
遠藤ケイと云ふ人が書いてゐる朝日新聞の夕刊に連載されてゐるコラム。
大蒜味噌とか凄く美味しさう。
追記: (2008-08-26)
上のリンクは切れてゐるがInternet Archive に保存されてゐた。
併し非英語の頁をInternet Archiveで閲覧すると、必ずエンコーディングの設定を弄らなければ成らないのは何とかなら無いのだらうか。
GNU Cライブラリーのオーバーライド -- やすやすと行う方法。
(Linux zone經由) 環境變數LD_PRELOADに私家版glibcライブラリを指定すれば、其方の凾數の方が優先的に使用されるみたい。
此は可成り便利。
例へば、今ホスト名がhogehogeだとしてgethostname()を上書する。
/* libmylib.c */
#include <sys/types.h>
int gethostname(char *name, size_t len)
{
const char *p = "Hello World!";
int i;
for (i=0; i<len; i++) {
name[i] = p[i];
}
return 0;
}
上記をファイルlibmylib.c*1と云ふ名前で保存し、ライブラリ化する。
$ gcc -Wall -shared -Wl,-soname,libmylib.so.1 -o libmylib.so.1.0 libmylib.c $ ln -s libmylib.so.1.0 libmylib.so.1 $ ln -s libmylib.so.1 libmylib.so
んで以て其れを呼出すテストプログラムは以下の如し。
/* myfunc.c */
#include <stdio.h>
#include <unistd.h>
int
main (int args, char **argv)
{
char name[5];
gethostname(name, sizeof (name));
name[4] = '\0';
printf("%s\n", name);
return 0;
}
此をコンパイルして實行する。
$ gcc -Wall myfunc.c -o myfunc $ env LD_PRELOAD=./libmylib.so ./myfunc Hell $ ./myfunc hoge
と成つて環境變數LD_PRELOADで私家版の方を指定した時は`Hell'と云ふ文字列が、さうで無い時はホスト名の一部`hoge'が返つて來る。
亦lddコマンドで何れのライブラリがリンクされてゐるかが確認出來る。
$ env LD_PRELOAD=./libmylib.so ldd ./myfunc ./libmylib.so => ./libmylib.so (0x40014000) ← 私家版がリンクされゐる。 libc.so.6 => /lib/i686/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) $ ldd ./myfunc libc.so.6 => /lib/i686/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
環境變數LD_PRELOADに私家版ライブラリを指定した方は、私家版がリンクされゐる事が判る。
成程、成程。
*1 適當なファイル名。
[ツッコミを入れる]
[]