Невозможно скомпилировать с libssh2 - PullRequest
0 голосов
/ 17 марта 2012

Я скачал и установил последнюю libssh2 со своего веб-сайта в папку /usr/src/libssh2-1.4.0

Я пытался собрать одну из примеров программ (ssh2.c) , которая доступна в каталоге примеров. Когда я скомпилировал с make из /usr/src/libssh2-1.4.0/example как

make ssh2

, он скомпилирован и работает довольно хорошо. Затем я скопировал программу ssh2.c по другому пути (~/Projects/precious/) и выдал команду

gcc -g -I/usr/src/libssh2-1.4.0/src -I/usr/src/libssh2-1.4.0/include -I/usr/src/libssh2-1.4.0/src/obj ssh.c -o ssh -lssh2 -ldl -lnsl -lresolv -lcrypto -lssl -lz 

Когда я пытаюсь запустить программу, она приветствует меня следующим сообщением

./ssh: symbol lookup error: ./ssh: undefined symbol: libssh2_session_handshake

Я также пытался скомпилировать его просто как

g++ -g ssh.c -o ssh -lssh2

Ответ все тот же.

Я также попытался скомпилировать как

gcc -DHAVE_CONFIG_H      -g -O2  -I/usr/src/libssh2-1.4.0/src -I/usr/src/libssh2-1.4.0/include -I/usr/src/libssh2-1.4.0/src/obj -c -o ssh.o ssh.c 
libtool --tag=CC --mode=link gcc  -g -O2   -o ssh  ssh.o /usr/local/lib/libssh2.la

но без везения. Пожалуйста, предложите

1 Ответ

0 голосов
/ 17 марта 2012

Я подозреваю, что ваш пакет libssh2, который вы создали вручную, - это другая версия (возможно, более новая), чем та, которая установлена ​​в вашей системе. И ваша линия связи пытается использовать ту, которая установлена ​​в системе, в которой нет функции libssh2_session_handshake. Попробуйте эту строку:

gcc -g -L/usr/local/lib -I/usr/src/libssh2-1.4.0/src -I/usr/src/libssh2-1.4.0/include -I/usr/src/libssh2-1.4.0/src/obj ssh.c -o ssh -lssh2 -ldl -lnsl -lresolv -lcrypto -lssl -lz 

или, может быть, этот:

gcc -g -L/usr/src/libssh2-1.4.0/src/obj -I/usr/src/libssh2-1.4.0/src -I/usr/src/libssh2-1.4.0/include -I/usr/src/libssh2-1.4.0/src/obj ssh.c -o ssh -lssh2 -ldl -lnsl -lresolv -lcrypto -lssl -lz 

Важно, чтобы флаг -L указывал на путь, где находится ваша скомпилированная библиотека.

...