2012-03-17 40 views
0

编译我下载并从他们website到位置/usr/src/libssh2-1.4.0不能与libssh2

安装了最新的libssh2我试图构建示例程序(ssh2.c)可用的例子目录之一。当我从/usr/src/libssh2-1.4.0/examplemake编译为

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 

,但没有任何运气。请建议

回答

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标志指向您的编译库所在的路径。