Cygwin

Re: g++でwcharが使えない

http://d.hatena.ne.jp/gpuppur/20080429 Cygwinのg++ 4.3.0でconfigureを試してみました。 ログを見ると、 conftest.cc:40: error: '::fgetwc' has not been declared conftest.cc:41: error: '::fgetws' has not been declared conftest.cc:42: error: '::…

paxでShift-JISのまま格納される件

Cygwinのtarで tar --format=pax -cf out.tar こんにちは.txt とすると、ファイル名がpaxヘッダにShift-JISのまま格納されてしまいます。 ところが、 tar --format=pax -cf out.tar あ.txt だと、ちゃんとUTF-8に変換されます。 コード(utf8.c)を見ると、UTF…

続 BOOST_CYGWIN_PATH

Cygwin on Windows 2000 on VMwareでテストをやり直しました。 Windows 2000でもHamigaki.Bjamのbjam_testとglob_testでプロセスが暴走するので調べてみたところ、assert()に失敗していて、その異常終了時に暴走するのはCygwinかBoost.Testの問題みたいでし…

続 MME on Cygwin/Vista

Vista上のCygwinでサウンドがおかしくなる問題が再発しました。 しばらく試してなかったので、SP1が原因かどうかは不明です。 これだけで落ちます。 cat /dev/dsp > /dev/null 動かないのは、 MMEのキャプチャ DirectSoundの再生/キャプチャ です。 クラッシ…

BOOST_CYGWIN_PATH

Cygwinで半年以上テストしていなくて、Boost1.34.1になってから初めてテストしました。 i18n対応の関係でWindows用の実装が既定で使われるようになっていることに今更気が付きました。 マクロの対応はこうです。 マクロ パス*1 API なし Windows Windows BOO…

WindowsユーザーのためのPATH講座

なんか、UNIXやMS-DOSを知らないけどgccのためにCygwin使っている人が多い感じなので、パスについて簡単に書いておきます。 まず、/foo/barという実行ファイルがあったとして、bashから起動するには、 /foo/bar とします。 毎回フルパスで指定するのは面倒な…

ようやくgcc4.3.0ビルド完了

「GMPとMPFRをgccのソースツリーにコピーしたらビルド楽だよ」と書こうと思って試したんですが、こうするとgccのビルドステップ毎にGMPとMPFRまでビルドされてすごい時間がかかりました。 昨日寝る前に仕込んで、Pen4 2.6GHzで16時間(C/C++のみ)、、、。 Cyg…

gcc4.3.0ビルドメモ

まず、 http://gcc.gnu.org/install/prerequisites.html を見て足りないパッケージをインストール。 Flexとかなくてもconfigureは通ってしまうので注意。(ビルドでコケる) MPFRはCygwinのパッケージが古いので別途ソースからビルド。 (自分はGMPもソースから…

MME on Cygwin/Vista

Vista上のCygwinでwaveOut系関数がクラッシュする問題がいつの間にか直っていました。 cygwin.dllは更新されていないので、先日のWindows Updateの影響だと思います。 これでVMware使わずにテストできます。ばんざい。

REG_EXPAND_SZ

W32_GETREGとSHELL/COMMANDを実装しました。 SHELLとCOMMANDコマンドは同じもので、コマンドシェルを起動して標準出力の結果を返すルールです。 これは、Hamigaki.Processを使えば簡単に実装できます。 一方、W32_GETREGはレジストリの読み出しを行う組み込…

アーカイブとビルド

Cygwinでのbjamの挙動が変だったので調査しました。 どうもCygwinのbjam(BBv1)でライブラリをビルドし、それをリンクする実行ファイルがあった場合、ライブラリのソースが一切変更されていなくても常にビルドされてしまいます。 これだと、Hamigaki.Bjamのよ…

続 cygwin1.dllと格闘中

今日一日中Cygwinを調べてましたが、直りませんでした。 そもそも動かなかったテスト ds_capture_test direct_sound_test pcm_source_test のうち、/dev/dspが関係あるのはpcm_source_testだけなので、/dev/dspの問題というより、Vistaのサウンド機能とCygwi…

cygwin1.dllと格闘中

CygwinでHamigaki.Audioのテストが暴走する問題を調査中です。 サンプルのpcm_record等は正常に動作しますし、pcm_source_testの2回目の読み込みでとまっているようだったので、次のコードを試したところ、再現しました。 #include <fcntl.h> #include <unistd.h> void capture</unistd.h></fcntl.h>…

Boost.Testが動かない

急にBoost.Testが動かなくなりました。 Boost.Testの中でSEGVになって無限ループになる場合があれば、普通に動く場合もあり、なんか変です。 多分、昨日Cygwinのバージョンアップしてからだと思います。 一旦バージョン戻してみます。 (12/24 追記) 原因はCy…

ldが遅い件

ldが遅すぎなのが気になって、ちょっとテストしてみました。 テストに使ったのは、チュートリアルのZIP作成サンプルです。 % time g++ -c -I/home/hamigaki/src/hamigaki -I/usr/include/boost-1_33_1 mk_zip.cpp real 0m16.954s user 0m15.685s sys 0m1.186…

続々 Cygwin vs Fiber

やっぱりスタックをコピーするだけでは駄目なようなので、諦めてスレッドを使った実装を追加しました。 <hamigaki/coroutine/detail/thread_coroutine.hpp> 実装にBoost.Threadを使ったので、別途ライブラリのリンクが必要です。 コルーチンが別スレッドで動作するため、呼び出し元とスレッド固有領域が別にな</hamigaki/coroutine/detail/thread_coroutine.hpp>…

続 Cygwin vs Fiber

とりあえず昨日の戦略でうまくいきました。(9/2追記: バグってました。クラッシュします。) <hamigaki/coroutine/detail/cygwin/cyg_tls.hpp> 怪しげなキャストでファイバコンテキストの中身にアクセスしている箇所はOSのバージョンによっては動かないかもしれません。これは要調査、と。 実装で問題になっ</hamigaki/coroutine/detail/cygwin/cyg_tls.hpp>…

Cygwin vs Fiber

そもそもCygwinではFiberが動かないようです。 http://www.cygwin.com/ml/cygwin/2004-12/msg00085.html MLの投稿にレスも付いてませんし、このコードは今のバージョンでも動きません。 いろいろ試した結果、ファイバ関数の中でCRT関数を呼ばない限り落ちな…

続cygwinでASIO

IASIOのメンバ呼び出しをインラインアセンブラで書き直しました。もう全然C++じゃないです。 inline ::ASIOBool asio_init(::IASIO* this_ptr, void *sys_handle) { ::ASIOBool result; __asm__ ( "mov %2, %%eax\n\t" "push %%eax\n\t" "mov %1, %%ecx\n\t"…

cygwinでASIO?

ASIOサポートをソースツリーにマージして、Cygwin/MinGWでも動くように調整中です。 Cygwin/MinGWでコンパイルまではできましたが、実行するとコアダンプします。 サンクや仮想メモリ周りが怪しい気がして、サンクをはずして動かしてみましたが、効果なしで…

/dev/dspの多重オープン

やはり、Cygwinでは/dev/dspの多重オープンができないようです。 これは次のコードでも確認できます。 #include <cassert> #include <fcntl.h> int main() { assert(::open("/dev/dsp", O_RDONLY) != -1); assert(::open("/dev/dsp", O_WRONLY) != -1); }Cygwinのソースコード</fcntl.h></cassert>…