我正在使用libssh编写一个C++程序,所以我查看了一下,以便安装库。最初我是通过sudo apt-get install libssh-dev安装的,但是在/usr/ libsshpp.hpp /libssh.中没有包含。
然后我在~目录中克隆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文件夹中编译example libsshpp.cpp时出现了许多错误,所以我认为这不是解决方案。
我的问题是,我如何安装最新版本的libssh并自动向/usr/include/libssh添加头文件,而不仅仅是在它自己的安装文件夹中?
发布于 2014-04-04 04:59:02
如果您真的想这样做,您可以修改include/libssh/CMakeLists.txt并添加
libsshpp.hpp添加到libssh_HDRS变量。因为它不是默认安装的,所以这可能不是官方支持的。
发布于 2014-04-04 05:03:46
您最好不要使用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祝好运。
发布于 2018-03-19 00:21:49
在Ubuntu上,您可以使用以下命令安装库
apt-get install libssh-dev然后,如果你正在手动编译,使用-lssh来链接库,例如。
gcc -lssh ssh-program.chttps://stackoverflow.com/questions/22848717
复制相似问题