私はプレーンな X11 アプリに取り組んでいます。
デフォルトでは、私のアプリは libX11.so と標準の gcc C および数学ライブラリのみを必要とします。このアプリは、Xfixes、Xrender、および ALSA サウンド システムで機能を拡張できます。ただし、これら (Xfixes、Xrender、および ALSA) の機能はオプションです。
この動作を実現するために、ランタイム ローディングを使用しています。つまり、libXfixes、libXrender、および libasound を dlopen() する必要があります。
したがって、アプリはそのようなライブラリがなくても機能します。
今私の質問:
What library names should I use when calling dlopen()?
これらはディストリビューションごとに異なることがわかりました。
たとえば、openSUSE 11 では、次のように名前が付けられます。
- libXfixes.so
- libXrender.so
- libasound.so
ただし、Ubuntu では、次のように、名前にバージョン番号が付いています。
- libXfixes.so.3
- libXrender.so.1
- libasound.so.2
したがって、「libXfixes.so」を開こうとすると、Ubuntu では失敗しますが、lib は明らかにそこにあります。バージョン番号が添付されているだけです。では、私のアプリはこれをどのように処理すればよいでしょうか?
アプリで最初に /usr/lib/ を手動でスキャンして、どのライブラリがあるかを確認し、次に適切なものを選択する必要がありますか? または、誰かがより良いアイデアを持っていますか?
みんなありがとう、
アンディ