如何将libssh包含到我的项目中

时间:2015-08-19 11:41:20

标签: c libssh

我按照说明安装了libssh,即使一切似乎都没问题,我的编译器仍会在“#include”行中返回错误“找不到文件”。我想它与目录或链接有关(我在下载它的同一文件夹中有“make install”)但我不知道我应该把它放在哪里所以我可以#include它在任何项目中。

这是我安装它的方式: 我下载了它并将其解压缩到我的桌面(Mac)上的“libssh”文件夹中。

然后我做了

cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..
make

最后:

sudo make install

然后在我的节目中我有:

#include <libssh/sftp.h>

并且XCode返回:“找不到libssh / sftp.h文件”。我尝试将桌面中的libssh文件夹添加到项目中,但我仍然遇到类似的问题。

我想我应该(以某种方式)将它安装到/ usr / include文件夹中,以便任何项目都可以使用它(比如pthread或许多其他项目),但我不知道该怎么做。

如果我在/ usr / include中包含任何其他文件它可以正常工作(例如)但是当我#include它返回找不到的文件时,即使我cd到/ usr / include / libssh文件libssh.h确实存在

这是一个非常简单的示例代码:

#include <stdio.h>
#include <pthread.h> //OK
#include <libssh/libssh.h> //Not OK, file not found.

int main(int argc, const char * argv[])
{
    printf("Hello World!");
    return 0;
}

2 个答案:

答案 0 :(得分:1)

the tutorial中描述了如何链接库

这里有两种可能性:

  1. 如上所述,您必须将这两行添加到代码中

    #define LIBSSH_STATIC 1

    #include <libssh/libssh.h>

  2. 使用LIBSSH_STATIC标记编译代码。

    gcc -DLIBSSH_STATIC test.c -o test.o

  3.   

    我认为如果你在/ usr / include中有库,编译器会自动链接它。例如,正确包含pthread.h文件而不做任何事情。

    这是一个系统库,大部分时间都会自动链接。 libssh不是。这就是为什么你必须更具体地说明如何编译/链接它。

答案 1 :(得分:0)

我曾多次遇到过类似的问题,我通过删除头文件周围的≤≥符号并使用“”和你所包含的头文件的绝对路径来解决它。现在这并不能解决你的libssh安装问题,但只要你知道头文件的绝对路径并且所有头的依赖关系都在他们想要的相应位置,它就会允许你按照你的方式编译它。寻找他们。希望这会有所帮助。