2012-04-22 96 views
1

我在我的Ubuntu linux上安裝了libssh2庫。當編譯C代碼我收到這樣的信息:從libssh2獲取未定義的引用

未定義的參考`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,但我不知道該怎麼做。

感謝

+0

可能你的系統上有多個libssh2庫,並且鏈接器選錯了一個。建議:使用「-L」來明確指向你的libssh2庫。 – paulsm4 2012-04-22 05:22:45

+0

@ paulsm4:我使用了相同的錯誤。 gcc -g -Lusr/src/libssh2-1.4.1/include -o mysshpass mysshpass.c – superfloyd 2012-04-22 05:41:25

+0

@Binyamin:謝謝我試過,但沒有結果:(。同樣的錯誤。 – superfloyd 2012-04-22 06:32:49

回答

0

我想你想:

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

謝謝你。我試過但仍然不起作用。有人告訴我需要安裝libssh2-devel但我唯一能做的就是從www.libssh2.org下載libssh2 – superfloyd 2012-04-22 16:46:13

+0

任何在Ubuntu上安裝libssh2的人都可以讓我知道我做錯了什麼? – superfloyd 2012-04-22 17:30:26

1

1)卸載你有什麼。有什麼不對,而且它只是在混淆事物。擺脫它。

2)*安裝 「libssh2-dev的是這樣的:

sudo apt-get install libssh2-dev libssh2 

3)嘗試重新構建應用程序

確保你的makefile或構建腳本指向正確的地方(」 -I 「用於編譯時頭,‘-L’的鏈接時庫)

好運

0

你可以放在最後-lssh 用途:!

gcc a.c -lssh 
+0

非常感謝您的建議。 – superfloyd 2014-10-09 19:01:03

相關問題