1

我在我的 Ubuntu linux 上安装了 libssh2 库。编译 C 代码时,我收到此消息:

对“libssh2_session_init_ex”的未定义引用

我从他们的网站下载了 libssh2。我按照如何在我的计算机上安装它的说明进行操作,但似乎我仍然缺少一些东西。

这是我的make文件中的代码:

all: ssh
     ssh: mysshpass.c
     gcc -lssh2 -g -o mysshpass mysshpass.c

clean:
     rm -rf mysshpass

C 代码的包含部分:

1 #include <stdlib.h>
2 #include <libssh2.h>
3 #include <libssh2_sftp.h>
4 
5 #include <sys/socket.h>
6 #include <netinet/in.h>
7 #include <arpa/inet.h>
8 #include <sys/types.h>
9 #include <stdio.h>
10 #include <string.h>
11 
12 //#include <libssh2_config.h>
13 
14 int main(int argc, char *argv[])

首先十分感谢

笔记 :

我使用了这条新线:

all: ssh

ssh: mysshpass.c
    gcc -g -Lusr/src/libssh2-1.4.1/include -o mysshpass mysshpass.c
clean:
    rm -rf mysshpass

但仍然存在相同的编译错误。顺便说一句,我被告知还要安装 libssh2-devel,但我不知道该怎么做。

谢谢

4

3 回答 3

1

1)卸载你所拥有的。出了点问题,它的存在只会使事情变得混乱。摆脱它。

2) *install" libssh2-dev 像这样:

sudo apt-get install libssh2-dev libssh2

3) 再次尝试构建您的应用程序。

确保您的 makefile 或构建脚本指向正确的位置(“-I”用于编译时标头,“-L”用于链接时库)

祝你好运!

于 2012-04-22T18:14:18.993 回答
0

我想你想要:

gcc -g \
-I /usr/src/libssh2-1.4.1/include \
-L /usr/src/libssh2-1.4.1/ \
-l ssh2 \
-o mysshpass mysshpass.c
于 2012-04-22T06:38:00.143 回答
0

你可以把 -lssh 放在最后。利用:

gcc a.c -lssh
于 2014-10-09T02:25:45.703 回答