从libssh2获取未定义的引用

时间:2012-04-22 05:13:49

标签: c ubuntu ssh libssh2

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

    未定义的引用`libssh2_session_init_ex'

我从他们的网站上下载了libssh2。我按照如何在我的电脑上安装它的说明,但似乎我仍然缺少soemthing。

这是我的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,但我不知道该怎么做。

由于

3 个答案:

答案 0 :(得分:1)

1)卸载你得到了什么。有些不对劲,它只会让事情混乱。摆脱它。

2)*安装“libssh2-dev像这样:

sudo apt-get install libssh2-dev libssh2

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

确保makefile或构建脚本指向正确的位置(“-I”表示编译时头文件,“ - L”表示链接时库)

祝你好运!

答案 1 :(得分:0)

我想你想要:

gcc -g \
-I /usr/src/libssh2-1.4.1/include \
-L /usr/src/libssh2-1.4.1/ \
-l ssh2 \
-o mysshpass mysshpass.c

答案 2 :(得分:0)

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

gcc a.c -lssh