【问题标题】:Install libssh include libsshpp.hpp安装 libssh 包括 libsshpp.hpp
【发布时间】:2018-03-19 00:21:49
【问题描述】:

我正在使用 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 但是当我在示例文件夹中编译示例 libsshpp.cpp 时有很多错误所以我认为这个不是解决方案。

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

【问题讨论】:

    标签: c++ libssh


    【解决方案1】:

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

    libsshpp.hpp
    

    libssh_HDRS 变量。因为默认没有安装,所以官方可能不支持。

    【讨论】:

    • 请在red.libssh.org打开一个错误,我们将来会安装头文件!谢谢。
    【解决方案2】:

    您最好不要使用 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
    

    祝你好运。

    【讨论】:

      【解决方案3】:

      在 Ubuntu 上,您可以使用以下命令安装库

      apt-get install libssh-dev
      

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

      gcc -lssh ssh-program.c
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        相关资源
        最近更新 更多