Установите libssh, включите libsshpp.hpp

Я пишу программу на C ++ с использованием libssh, поэтому я смотрю вокруг, чтобы установить библиотеку. Сначала я устанавливаю sudo apt-get install libssh-dev но в / usr / include / libssh нет libsshpp.hpp.

Потом я клонирую git://git.libssh.org/projects/libssh.git libssh в ~ директории и запустить ./build/build_make.sh, он имеет libsshpp.hpp в ~/libssh/include но не в /usr/include/libssh,

Я думаю, это потому, что разные версии между ними, более новые имеют libsshpp.hpp, я тогда пытаюсь скопировать файл libsshpp.hpp в /usr/include/libssh но есть много ошибок, когда я компилирую пример libsshpp.cpp в папке примеров, поэтому я думаю, что это не решение.

У меня вопрос, как я могу установить новейшую версию libssh и автоматически добавлять заголовки в /usr/include/libssh не только в собственной папке установки?

1

Решение

Если вы действительно хотите это сделать, вы можете изменить включают в себя / libssh / CMakeLists.txt и добавить

libsshpp.hpp

к libssh_HDRS переменная. Поскольку он не установлен по умолчанию, он может не поддерживаться официально.

1

Другие решения

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

Удачи.

0

В Ubuntu вы можете установить библиотеку с

apt-get install libssh-dev

Затем, если вы собираете вручную, используйте -lssh связать библиотеку, например.

gcc -lssh ssh-program.c
0
По вопросам рекламы [email protected]