Установите 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
не только в собственной папке установки?
3 ответа
Если вы действительно хотите это сделать, вы можете изменить include/libssh/CMakeLists.txt и добавить
libsshpp.hpp
в переменную libssh_HDRS. Поскольку он не установлен по умолчанию, он может не поддерживаться официально.
В Ubuntu вы можете установить библиотеку с
apt-get install libssh-dev
Затем, если вы собираете вручную, используйте -lssh
связать библиотеку, например.
gcc -lssh ssh-program.c
Возможно, вам лучше не использовать код из репозитория 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
Удачи.