1

私はlibsshを使ってC++プログラムを書いているので、ライブラリをインストールするために周りを見回しています。最初にインストールしましsudo apt-get install libssh-devたが、/usr/include/libssh に libsshpp.hpp がありません。

git://git.libssh.org/projects/libssh.git libssh次に、 ~ ディレクトリにクローンを作成して実行./build/build_make.shします。libsshpp.hpp は含まれていますが、含まれて~/libssh/includeいません/usr/include/libssh

それらの間のバージョンが異なるためだと思います。新しい方にはlibsshpp.hpp/usr/include/libsshがあり、ファイルlibsshpp.hppをコピーしようとしましたが、examplesフォルダーにサンプルlibsshpp.cppをコンパイルすると多くのエラーが発生するため、これは解決策ではないと思います。

私の質問は、libssh の最新バージョンをインストール/usr/include/libsshして、独自のインストール フォルダーだけでなくヘッダーを自動的に追加するにはどうすればよいですか?

4

3 に答える 3

0

libsshこれらのヘッダーが実際にシステムにインストールされている コードと一致しないという理由で、おそらく git リポジトリのコードを使用しない方がよいでしょう。

そのため、行った変更を元に戻し (コピーまたは作成したファイルまたはシンボリックリンクを削除)、代わりに を使用して開発部分をインストールすることをお勧めしますapt。これを実行すると、どのヘッダー ファイルがインストールされたかを確認できます。

rpm -ql libssh-dev

私のシステム (Fedora) では、パッケージは実際にはlibssh-devel. 私が走るとき

rpm -ql libssh-devel

次の出力が得られます(部分的)

/usr/include/libssh/callbacks.h
/usr/include/libssh/legacy.h
/usr/include/libssh/libssh.h
/usr/include/libssh/server.h
/usr/include/libssh/sftp.h
/usr/include/libssh/ssh2.h
/usr/lib64/cmake/libssh-config-version.cmake
/usr/lib64/cmake/libssh-config.cmake
/usr/lib64/libssh.so
/usr/lib64/libssh_threads.so
    ...

ご覧のとおり、libssh.hヘッダーはlibsshディレクトリにあるため、コードから使用します

#include <libssh/libssh.h>

その方法を使用すると、インストールしたヘッダーがインストールしたライブラリと一致することが確実になり、後でイライラする時間を大幅に節約できます。

実際に動作することを確認するために使用できる簡単なテスト プログラムを次に示します。

// sshtest.cpp
#include <iostream>
#include <libssh/libssh.h>

int main()
{
    std::cout << ssh_copyright() << std::endl;
    return 0;
}

コンパイル、リンク、実行:

g++ -o sshtest sshtest.cpp -lssh ./sshtest

これにより、バージョン番号で始まる著作権文字列が生成されるため、libssh期待したバージョンと一致することを確認できます。

私のマシンでは、次の出力が生成されました。

0.6.3 (c) 2003-2014 Aris Adamantiadis, Andreas Schneider, and libssh contributors. Distributed under the LGPL, please refer to COPYING file for information about your rights

幸運を。

于 2014-04-03T21:03:46.097 に答える