安装libssh包含libsshpp.hpp

时间:2014-04-03 20:50:07

标签: c++ libssh

我正在使用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,它在~/libssh/include中有libsshpp.hpp但在/usr/include/libssh中没有。

我认为这是因为它们之间的版本不同,较新的有libsshpp.hpp,然后我尝试将文件libsshpp.hpp复制到/usr/include/libssh但是当我在examples文件夹中编译示例libsshpp.cpp时出现了很多错误,所以我认为这不是解决方案。

我的问题是如何安装最新版本的libssh并自动将标头添加到/usr/include/libssh不仅在其自己的安装文件夹中?

3 个答案:

答案 0 :(得分:1)

如果您真的想这样做,可以修改 include / libssh / CMakeLists.txt 并添加

libsshpp.hpp

libssh_HDRS 变量。由于默认情况下未安装,因此可能无法正式支持。

答案 1 :(得分:0)

最好不要使用git存储库中的代码,因为这些标头与您系统上实际安装的libssh代码不匹配。

因此,我建议您撤消所做的更改(删除您复制或创建的文件或符号链接),然后使用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
祝你好运。

答案 2 :(得分:0)

在Ubuntu上,您可以使用

安装库
apt-get install libssh-dev

然后,如果您手动编译,请使用-lssh链接库,例如

gcc -lssh ssh-program.c