* まもなく移轉
當サイトはまもなく移轉します。
* みっくみく事件の決着
驚いた。ドワンゴが殆ど完全に折れる形で、しかもこんなに早く決着が付くとは思はなかった。こんな結末になるとは夢にも思はなかった。
* Quốc ngữ と日本語
ベトナム語は六つの聲調を持つ言語であるが、現在それを表記する爲に用ゐられてゐる Quốc ngữ ではその六声調を書き分ける事が出來るらしい。
* 自然物と信仰/生體機械としての人間/初音ミク/オープンソース戰爭
みっくみくが JASRAC された件には非常にもやもやとさせられる。だから出來るだけ消化しようと試みた。Every man thinketh his burden is the heaviest.
* HsHyperEstraier 0.1
HyperEstraier の Haskell 用バインディングである HsHyperEstraier を公開した。
_
jueves, 11 febrero 2005
GStreamer, Darwin, C++, Libtool
Cuenta Larga = 12.19.12.0.10; tzolkin = 7 Oc; haab = 13 Pax
[Trackback Ping]
GStreamer, Darwin, C++, Libtool
この四つを全て同時に使はうとすると、GStreamerがまともに動かない事で惱まされる事になる。一つでも欠ければ動く。
1. GStreamer
GStreamerのモジュールは、それ自體が動的にリンクされるモジュールであるが、その内の幾つかは更に補助プラグインとして別の.soファイルをロードする(libgstaudio.so等)。また、モジュールから補助プラグインへのシンボルの參照は、dlsym(3)に依ってではなく、モジュールから直接に未定義シンボルとして參照する事で行はれる。GStreamerはモジュールをlazy bindingする爲、通常これは問題にならないが、Darwinのldオプション-bind_at_loadを指定して作られた實行ファイルからGStreamerを呼んだ場合、-bind_at_loadに依ってlazy bindingが禁止される故に、モジュールのロードに失敗する("how to remove plugin?"エラー)。
2. Darwin
Darwinでは、.dylibまたは.bundle(.soと等価)がロードされた時、そのライブラリ内の全てのシンボルをロードするのではなく、實際に使はれた時に初めてロードする(lazy binding)。實際のロードの單位はシンボル單位ではなくモジュール(.o)單位であり、假にリンカに-single_moduleを渡して全ての.oが結合されたライブラリを作ったとすれば、そのライブラリ内の何れかの關數が最初に呼ばれた途端に、ライブラリ全體がロードされる(未確認)。
3. C++
C++のグローバル變數(staticなものも含む)は、それが組込み型でない場合、すなはちコンストラクタが呼ばれる必要がある場合には、それらを含む實行ファイルまたはライブラリがロードされた直後にコンストラクタを呼ばなくてはならず、その爲のコードはコンパイラによって自動的に生成される。しかしDarwinでは、lazy bindingを禁止してゐない限り、動的にリンクされたライブラリに含まれるグローバル變數初期化ルーチンが呼ばれない(この邊りの詳細は不明)。
4. Libtool
C++のグローバル變數問題を回避する爲に、Libtoolは實行ファイルをリンクする際、それがC++のオブジェクトであり、且つDarwin用のバイナリを作ってゐるならば、勝手に-bind_at_loadを指定してしまふ。
2002
10
11
12
2003
1
2
3
4
5
6
7
8
9
10
11
12
2004
1
2
3
4
5
6
7
8
9
10
11
12
2005
1
2
3
4
5
6
7
8
9
10
11
12
2006
1
2
3
4
6
7
8
9
10
11
12
2007
1
2
3
4
5
6
7
8
9
10
12
2008
1
4