无法用libssh2编译

时间:2012-03-17 17:10:46

标签: c++ c linux ssh libssh2

我从他们的libssh2下载并安装了最新的website/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 :(得分: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标志指向编译库所在的路径。