2011-07-20 46 views
2

这是我第一次在C. im的项目中工作,只是想创建一个SSH客户端。libssh2 C编译

我的代码libssh2网站

http://www.libssh2.org/examples/ssh2.html

复制但是当我运行此我得到下面的错误?

main.o: In function `main': 
main.c:(.text+0xbe): undefined reference to `libssh2_init' 
main.c:(.text+0x1a7): undefined reference to `libssh2_session_init_ex' 
main.c:(.text+0x1bf): undefined reference to `libssh2_session_startup' 
main.c:(.text+0x209): undefined reference to `libssh2_hostkey_hash' 
main.c:(.text+0x282): undefined reference to `libssh2_userauth_list' 
main.c:(.text+0x3e3): undefined reference to `libssh2_userauth_password_ex' 
main.c:(.text+0x443): undefined reference to `libssh2_userauth_keyboard_interactive_ex' 
main.c:(.text+0x4b9): undefined reference to `libssh2_userauth_publickey_fromfile_ex' 
main.c:(.text+0x529): undefined reference to `libssh2_channel_open_ex' 
main.c:(.text+0x58d): undefined reference to `libssh2_channel_setenv_ex' 
main.c:(.text+0x5d9): undefined reference to `libssh2_channel_request_pty_ex' 
main.c:(.text+0x633): undefined reference to `libssh2_channel_process_startup' 
main.c:(.text+0x674): undefined reference to `libssh2_channel_free' 
main.c:(.text+0x6a0): undefined reference to `libssh2_session_disconnect_ex' 
main.c:(.text+0x6ac): undefined reference to `libssh2_session_free' 
main.c:(.text+0x6c9): undefined reference to `libssh2_exit' 
collect2: ld returned 1 exit status 

我知道有一些库连接问题。我使用Netbeans作为我的IDE,并且相对比较新。任何人都可以请指导我。我在互联网上搜索了很多,但大多数回复与使用gcc在命令中编译的代码有关。如果有人可以帮助Netbeans。

回答

2

明白了,在Netbeans的转到文件 - >项目属性 - >链接器 - >附加的命令我写-lssh2

0

要编译该代码,您需要在系统中安装libssh2。那些未定义的引用来自包含在头文件中(并在代码中使用)的函数,这些函数需要链接到实现它们的库。

#include <libssh2.h> 
#include <libssh2_sftp.h> 

安装libssh2后,您必须将标志-lssh2添加到编译器。我不知道Netbeans,所以我无法帮助你。浏览项目选项并查找有关编译器参数/标志的内容。

+0

libssh2已安装。你的方法在命令行上工作。仍然无法弄清netbeans –

+0

我也想知道-lssh2的逻辑是什么?我的意思是你怎么知道这个关键字。 –

+0

因为它是libssh2。编译器标志是-l后面跟着没有'lib'的lib名称。例如,如果你想包含数学库(libm),你可以添加标志-lm – nmat