2017-11-05 5 views
2

実験したいFree C/C++プロジェクトに私の足元を叩くことがあります。共有ライブラリを使用するC/C++プロジェクトをサンドボックスにする方法

これは9回になります。これにより、すべての依存関係が機能するようになり、必然的に他のプロジェクトの依存関係が壊れてしまい、他のプロジェクトに戻ったときにもう一度他のmasochistセッション。

もっと良い方法がありますが、私はそれを見つけることができませんでした。

1つのプロジェクトだけが共有ライブラリを参照できるように共有ライブラリをインストールする必要がありますか?

私はMac OSですので、実際にはそこで動作するソリューションにのみ興味があります。

私はhomebrewを使ってそれらのライブラリをインストールすることができます。

+1

あなたの正確なニーズはわかりませんが、共有ライブラリを使用せずにこれらのアプリケーションを構築することは可能です。 –

+1

[brew](https://brew.sh/)のようなパッケージマネージャを使用することを検討しましたか? –

答えて

2

アプリケーションをコンパイルする(またはリンクする)ときに、実行時に共有ライブラリを検索する場所を指定する-rpathオプションを指定できます。パスの最初のコンポーネントとして$ORIGINを含めると、実行可能ファイルの場所に関連して検索が行われます。

これは、実行可能ライブラリを他のアプリケーションのライブラリとは別に保存できることを意味します。

たとえば、/opt/myapp/bin /にアプリケーションをインストールし、そのライブラリを/ opt/myapp/lib /に置いたとすると、rpathを$ORIGIN/../lib/に設定し、/ opt/myappディレクトリをどこに移動してもあなたがすべてを動かすと)、アプリケーションはそれ自身のlib/dirに独自のバージョンのライブラリを見つけるでしょう。

これはUnixソリューションです。 Windowsでは、実行可能ファイルと同じディレクトリにDLLを置くことができます。これは、Windowsが最初に検索するためです。

関連する問題