SSブログ

ベテルギウス復活 [日常のあれやこれや]

暗くなってたベテルギウスが戻しそうな気配。
betelgeuse.png
AAVSOの最新の集計データを見ると底を打ったかなあ、という感じ。なだらか(高調波成分が少ない)になってるので、何か突発的な事象ではなくて、やっぱり変光の周期が被ったとか、大きなガスが前を横切ったとかなんかだということなのかな。

ガイナンさん、すげえ、予測がどんぴしゃじゃん。さすがエンタープライズ号に乗ってるだけの事はある。

nice!(0)  コメント(0) 

Spinnaker macOS版のサンプルコード [日常のあれやこれや]

先日FLIR社のGEN<i>CAMカメラ用ドライバSpinnakerのmacOS版をインストールした。基本的な機能をひとつずつ確認できる簡単なサンプルコードが50本ほども付いていて、どれもMakefileのパス設定をちょっと書き換えれば(ソースファイルが/Application/Spinnaker/src/前提で書かれていて../binにインストールされるようになっている。これだとパーミッションが面倒)コンパイルできて(もちろんgccでもclangでも)、コマンドラインとして動作することを確認した。

これをXcodeからビルドしてみた。もちろんsearch pathの設定と、実行時に必要なライブラリがリンクできるようにrpathの指定をしないといけないけど、それをしてやる(Spinnaker.dylibがlibompやlibusbや、さらに../../libにあるライブラリを呼んでいる。ディレクトリ構造決め打ち)と、ちゃんとビルドできた。

ところが、実行するとライブラリがロードできない、と言ってクラッシュする。よく見ると呼んでいるライブラリにコード署名がない、ということらしい。
$ codesign -dvvv *.dylib
などとしてやると、署名があるかどうかわかるらしいので、やってみるとたしかにSpinnaker.dylib含めて全部なかった。macOSはいつの間にかじわじわと署名にうるさくなって行っている。「いつの間にか」って、知ってる人は知ってるんだろうけど。

例えば、XcodeのBuild Phaseで、入れ子のライブラリ含めて全部Embed & Signに指定してビルドすると、全部のライブラリが僕のdeveloper IDで署名された上でコピーされる。でも、これを署名なしのと置き換えるのは変だよな。Bundle形式のアプリならこれでいいんだろうか。それだとまたrpathの書き換えやotool、install_name_toolを呼ぶスクリプトのぐちゃぐちゃ地獄になるな。でも独立したアプリだとそうするしかないのか。

そもそもBundle構造を持たない単一バイナリのライブラリの署名ってどこについてるんだ? dylibってリソースフォークみたいな構造があるの?よく知らない。

Xcodeでビルドした実行形式のファイルはこのように動かないのに、手動でmakeした実行形式のファイルは同じライブラリを参照しているのに動いてしまう。どうなってるんだろう。実行形式本体に署名がないと無視されるんだろうか。昔ながらのunixの作法を妨げることはしないけど、結果は自己責任で、ということなんだろうか。

いずれは設備のホストで動くようにしたいんだけど、そこで署名なんかでトラブるのはイヤなので、やっぱり最終的にはXcodeでビルドできるようにしたい。どうするのがいいんだろうか。

クラッシュするときのエラーメッセージに「少なくともad-hoc署名しろ」とあるので、とりあえずそうすべきなんだろうか。でもad-hoc署名って実行できるデバイスが限られたりするようで、あとあと面倒が起きないようにするためには結局どうするのが一番良いんだろうか。署名ってどうも複雑でいまいちよくわかっていない。どうも知らないことだらけで、困ってしまう。

みんなはどうしてるんだろ。


nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。