0

我从他们的网站下载并安装了最新的libssh2到该位置/usr/src/libssh2-1.4.0

我试图构建示例目录中可用的示例程序(ssh2.c)之一。make当我用from /usr/src/libssh2-1.4.0/exampleas编译时

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

但没有任何运气。请建议

4

1 回答 1

0

我怀疑您手动构建的 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 标志指向您编译的库所在的路径。

于 2012-03-17T17:44:13.407 回答