いくつかのCまたはC++コードの依存関係を満たさなければならないたびに、完全に失われたと感じていることを認めなければなりません。現在、私は buntu 9.1 (Karmic Koala)を使用していますが、Windowsからの同じような寂しさを覚えています。
私はC、C++、静的および動的ライブラリ、ヘッダーファイルとリンク、およびパケットマネージャーの「適性」を理解していると本当に思いますが、実際の部分に関しては、どうすればよいかまったくわかりません。どうにかして管理しても、どうやってそこにたどり着いたのかわからず、何も学ばない。
たとえば、今日は "glib2、curl、opensslを使用する"というコードを使用したいと思いました。結局、curl
とopenssl
はすでにインストールされていることがわかりましたが、パケットマネージャーを介してlibcurl3-dev
をインストールする必要がありました。これには、libcurl4-openssl-dev
も必要(およびインストール)されるため、 OpenSSLについて心配する必要はありません。しかし、私は67の似たような選択肢からこれらのパケット名を選択する必要がありました。一方、glib
は、一致するパケットがまったくなかったため、手動でダウンロードしてビルドする必要がありました。
これを見つけるのに数時間かかりましたが、これは初めてではありません。だから私の質問は本当にです:
依存関係について漠然とした説明がある場合:
依存関係を満たすためにインストールするパッケージを把握することは、正確な科学ではありません。しかし、あなたを助けるかもしれないいくつかのヒントがあります:
-dev
で終わるパッケージが必要です。これは開発の略です。たとえば、openssl
パッケージには、暗号化を操作するためのコマンドラインツールとライブラリが含まれています。 libssl-dev
には、openssl開発用のヘッダーファイルとライブラリが含まれています。apt-cache search
を使用します。たとえば、libssl-devがopenssldevパッケージの名前であることを実際には知りませんでした。次のコマンドを使用することがわかりました:apt-cache search openssl | grep dev
次に、別の言語/ライブラリに関連していないように見えるコマンドを使用します。dpkg -l
を使用してインストールしたパッケージを確認できますが、通常は、必要なパッケージを見つけてaptにインストールするように指示します。既にインストールしている場合は、aptが通知します。もう1つの良いヒントは、どのパッケージがファイルを所有しているかを知りたい場合は、dpkg -S /path/to/thefile
を使用することです。./configure
は、またはREADMEファイル。多くの場合、必要な正確なパッケージに名前を付けることさえあります。-lssl
をgccに渡すだけです。 -l
のオプションがわからない場合は、/ lib /を調べてください(前面の「lib」と背面の「.so ...」を削除して、「 gccに渡されるmiddle ')。誰も言及しなかった
aptitude build-dep
マニュアルページのエントリはかなり包括的です。