Как включить libssh в мой проект

Я установил libssh, следуя инструкциям, и хотя все вроде бы в порядке, мой компилятор по-прежнему возвращает ошибку "файл не найден" в строке "#include". Я предполагаю, что это как-то связано с каталогами или ссылками (у меня есть "make install" в той же папке, где я его скачал), но я не знаю, куда мне его поместить, чтобы я мог # включить его в любой проект.

Вот как я его установил: я скачал его и разархивировал в папку "libssh" на рабочем столе (Mac).

Тогда я сделал

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 возвращает файл, который не найден, даже если я перехожу в / 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 ответа

В уроке описано, как вы должны связать библиотеку

У вас есть две возможности здесь:

  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 не является. Вот почему вы должны быть более конкретными о том, как скомпилировать / связать его.

У меня была очень похожая проблема несколько раз, и я решил ее, удалив символы ≤ ≥ из заголовочных файлов и используя символы "" и абсолютный путь к заголовочному файлу, который вы включаете. Теперь это не решит ваших проблем с установкой libssh, но позволит вам скомпилировать так, как у вас есть, при условии, что вы знаете абсолютный путь к вашему файлу заголовка и все зависимости вашего заголовка находятся в соответствующих местах, в которые они были включены искать их. Надеюсь, это поможет.

Другие вопросы по тегам