試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

x86_64環境での32bitアプリケーションとJACK Audio Connection Kitについて

(2008/12/1)JACK Audio Connection Kitのバージョン0.115.6でこの記事の問題点は解消されている。


JACKのバージョン0.103.0の時点では、32bit版のJACKライブラリ(libjack.so)があっても、64bit版のjackdを起動した状態では32bitのJACKクライアントからは接続できない。
下はjack_lspでのポート一覧取得の例。あらかじめ32bit版のライブラリと実行ファイル(末尾に「32」の付いているもの)を用意*1している。

$ jackd -R -d alsa &
$ jack_lsp
JACK tmpdir identified as [/dev/shm]
alsa_pcm:capture_1
alsa_pcm:capture_2
alsa_pcm:playback_1
alsa_pcm:playback_2
(以下略)
$ jack_lsp32
JACK tmpdir identified as [/dev/shm]
Only external clients need attach port segments
$ killall jackd

逆も同様で、32bitのjackdが動作していると64bitのJACKアプリからは接続不可。

$ jackd32 -R -d alsa &
$ jack_lsp32
JACK tmpdir identified as [/dev/shm]
alsa_pcm:capture_1
alsa_pcm:capture_2
alsa_pcm:playback_1
alsa_pcm:playback_2
(以下略)
$ jack_lsp
JACK tmpdir identified as [/dev/shm]
could not attach as client
jack_client_open() failed, status = 0x21
$ killall jackd32

32bitなJACKアプリケーションを使用する際には、32bit版のjackdを起動する必要がある。また、32bit/64bitのどちらのjackdを起動した場合でも、JACKアプリケーションは32bitのものと64bitのものを混在させて使うことはできない。
QjackCtlを使用する場合は、32bit版QjackCtlも必要で、Qt4などの依存ライブラリに関しても32bit版が必要となる。
この動作は、現在のバージョンにおいては仕様っぽいので、うまく使い分けるか、面倒なら32bit環境に統一してしまうのも手。このあたりは用途と使用頻度、ユーザが面倒に感じる度合いなどにもよるので、それぞれに合った対策をするのがよさそう。
なお、今後対応する可能性はあるように見える。
[引用]ファイル名: TODO より

(「TODO post-1.0」内)
- handle mixed-mode 64bit and 32bit clients (joq)

使用したバージョン:

  • JACK Audio Connection Kit 0.103.0 (32bit/64bitともに同バージョン)