2012-03-17 71 views
0

編譯我下載並從他們website到位置/usr/src/libssh2-1.4.0不能與libssh2

安裝了最新的libssh2我試圖構建示例程序(ssh2.c)可用的例子目錄之一。當我從/usr/src/libssh2-1.4.0/examplemake編譯爲

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 

,但沒有任何運氣。請建議

回答

0

我懷疑您手動構建的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標誌指向您的編譯庫所在的路徑。