Не удается скомпилировать с libssh2

Я скачал и установил последнюю версию 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

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


person Abhijit    schedule 17.03.2012    source источник


Ответы (1)


Я подозреваю, что ваш пакет 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 указывал на путь, по которому находится ваша скомпилированная библиотека.

person Wes Hardaker    schedule 17.03.2012