我从他们的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
但没有任何运气。请建议
答案 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标志指向编译库所在的路径。