2

我已经按照说明安装了 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;
}
4

2 回答 2

1

教程中描述了如何链接库

你有两种可能:

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

    #define LIBSSH_STATIC 1

    #include <libssh/libssh.h>

  2. LIBSSH_STATIC你用标志编译你的代码。

    gcc -DLIBSSH_STATIC test.c -o test.o

我认为如果您在 /usr/include 中有库,编译器会自动链接它。例如, pthread.h 文件被正确包含而无需执行任何操作。

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

于 2015-08-19T12:47:11.983 回答
0

我曾多次遇到类似的问题,我通过从头文件周围删除 ≤ ≥ 符号并使用“”s 和您包含的头文件的绝对路径来解决它。现在这并不能解决您的 libssh 安装问题,但只要您知道头文件的绝对路径并且所有头文件的依赖项都位于它们被集成的相应位置,它就可以让您按照自己的方式进行编译寻找他们。希望这会有所帮助。

于 2016-03-22T19:31:50.810 回答