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