首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用libssh2编译

无法使用libssh2编译
EN

Stack Overflow用户
提问于 2012-03-18 01:10:46
回答 1查看 4.6K关注 0票数 0

我从他们的website下载最新的libssh2并将其安装到位置/usr/src/libssh2-1.4.0

我正在尝试构建一个示例程序(ssh2.c),它位于示例目录中。当我在/usr/src/libssh2-1.4.0/example中使用make进行编译时

代码语言:javascript
复制
make ssh2

,它编译并运行得很好。然后,我将程序ssh2.c复制到不同的路径(~/Projects/precious/),并发出以下命令

代码语言:javascript
复制
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 

当我尝试运行该程序时,它会向我显示以下消息

代码语言:javascript
复制
./ssh: symbol lookup error: ./ssh: undefined symbol: libssh2_session_handshake

我还尝试将它简单地编译为

代码语言:javascript
复制
g++ -g ssh.c -o ssh -lssh2

回应都是一样的。

我还尝试过编译为

代码语言:javascript
复制
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

但是一点运气都没有。请给出建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-18 01:44:13

我怀疑您手动构建的libssh2包的版本(可能更高)与系统上安装的版本不同。并且您的链接行正在尝试使用系统上安装的链接行,该链接行中没有libssh2_session_handshake函数。试试下面这行:

代码语言:javascript
复制
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 

或者可能是这个:

代码语言:javascript
复制
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标志指向编译后的库所在的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9751981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档