web-dev-qa-db-ja.com

Ubuntuでビルドされたプログラム(SDLを使用)を他のシステムで動作させるにはどうすればよいですか?

OpenALを使用するプログラムを書いています。私がそれにリンクするとき(私はCMakeを使用しています)、libpulse-PulseAudioに対してもリンクします。これにより、バイナリが他のシステムで機能しなくなります。 PulseAudioに対して何らかの方法でリンクしないことができますが、UbuntuでOpenALを使用できますか?

編集:考え出したところ:PulseAudioをドラッグしているのはOpenALではなく、SDLです。それについて私にできることはありますか?

4
halifar

SDL PulseAudioについては、libsdl1.2debian-alsaをインストールするだけで、pa-sdlバージョンが削除され、ALSA libsに対してリンクされます。それでも、dv3500eaのような他のバイナリ/ライブラリ関連の互換性が得られる可能性があります。システム関連の依存関係の問題を回避する一般的なアプローチは、静的リンクを使用することです。ライブラリから必要なコードが含まれているため、これによりバイナリがはるかに大きくなります。

静的リンクの詳細については、次を確認してください: http://wiki.linuxquestions.org/wiki/Static_linking

1
João Pinto

バイナリパッケージを提供する各プラットフォームで個別にバイナリをビルドし、他のプラットフォームのユーザーが自分でビルドできるようにソースコードを配布するようにしてください。

Linuxはバイナリ互換ではなくソース互換に焦点を合わせていることに注意してください。ほとんどのディストリビューションは互いにバイナリ互換ではありません(UbuntuとDebianでも完全に互換性はありません * )。

これはやや関連する質問です: 技術的に言えば、Ubuntuは他のLinuxディストリビューションと何が違うのですか?

2
dv3500ea