【问题标题】:Cannot compile with libssh2无法使用 libssh2 编译
【发布时间】:2023-03-30 04:08:01
【问题描述】:

我从他们的website 下载并安装了最新的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

但没有任何运气。请推荐

【问题讨论】:

    标签: c++ c linux ssh libssh2


    【解决方案1】:

    我怀疑您手动构建的 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 标志指向你编译的库所在的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2022-01-10
      • 2021-04-29
      • 1970-01-01
      相关资源
      最近更新 更多