2012年6月20日

[ubuntu-jp:4165]すでにビルドされているバイナリーの挙動が、ライブラリの開発用パッケージのありなしで変わる問題

みなさまこんにちは。坂本と申します。

ライブラリを利用するソフトウェアをビルドしたのですが、問題に遭遇したので
ご相談します。

今回、ライブラリ「libunicap2」を利用したソフトウェアをビルドしました。
ビルドのためにライブラリのヘッダファイルなどを含むパッケージ
「libunicap2-dev」をインストールしました。

ビルドは無事に終わり、作成されたバイナリーの動作も期待通りでした。
ここで、「libunicap2-dev」をアンインストールしたところ、ビルド済みのバイ
ナリーの挙動が変わってしまいました。

私の理解では、パッケージ「*-dev」はライブラリのヘッダファイルなどを含む
開発用のパッケージであって、ビルドされたバイナリーはこのパッケージがあっ
てもなくても同じように動作すると思います。

しかし先述の通り、libunicap2はその限りではありませんでした。

私の理解が間違いなのかあるいはライブラリのパッケージングにバグがあるの
か、私には判断できないので、教えていただけたらと思います。


なお、この問題を再現するために作成したプログラムが以下です。このプログラ
ムは、現在システムに認識されているビデオ入力デバイスを検索して、その名前
を出力します。コンパイルされたバイナリーは、libunicap2-devのインストール
されている環境では期待通りにビデオ入力デバイス名を出力しますが、インス
トールされていない環境では何も出力しません。

#####
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

#include <unicap/unicap.h>

int
main(void)
{
unicap_status_t status;
unicap_device_t devices[32];

int count;
int index;

for ( index = 0; index < 32; index++ )
{
status = unicap_enumerate_devices(NULL, &devices[index], index);
if ( !(status & STATUS_FAILURE) )
{
printf("device found: %s\n", devices[index].model_name);
}
}

return 1;
}
#####
$ gcc -o seek.exe ./seek.c -lunicap -I/usr/include/unicap
#####

よろしくお願いします。


坂本 貴史
o-takashi@xxxxx


投稿者 xml-rpc : 2012年6月20日 13:50
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/111034
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。