您最好不要使用 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
祝你好运。