【问题标题】:How to include libssh to my project如何将 libssh 包含到我的项目中
【发布时间】:2016-03-23 03:31:50
【问题描述】:

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

【问题讨论】:

  • @ckruczek 我下载了它并将其解压缩到我桌面上的文件夹“libssh”中。然后我做了(|| 表示新行):“cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..” || “make”,最后:“sudo make install”
  • 所以请提供您尝试编译的代码以及编译器抛出的错误消息......请提供尽可能多的信息来帮助您。
  • 好的,你如何编译你的测试程序。伙计,您必须向我们提供帮助您所需的所有信息。每件小事都问你有点烦人。
  • @ckruczek 对不起,我不明白你的意思。我只是按“播放”。如果我在 /usr/include 中包含任何其他文件,它工作正常(如 )但是当我 #include 它返回文件未找到,即使我 cd 到 /usr/include /libssh 文件 libssh.h 确实存在。
  • 是的......你只需按“播放”......这让我更加困扰......所以没有任何关于你如何编译的提示,我无法帮助你。您是否在链接过程中包含了该库? gcc -lssh test.c -o test.o 或类似的东西?

标签: c libssh


【解决方案1】:

the tutorial 中描述了您必须如何链接库

你有两种可能:

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

    #define LIBSSH_STATIC 1

    #include &lt;libssh/libssh.h&gt;

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

    gcc -DLIBSSH_STATIC test.c -o test.o

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多