无法使用libssh2进行编译
Cannot compile with 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
但是没有任何运气。请建议
我怀疑您手工构建的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标志指向编译库所在的路径。