金牌会员
- 积分
- 1899
- 金钱
- 1899
- 注册时间
- 2017-11-28
- 在线时间
- 140 小时
|
50金钱
本帖最后由 xiaoxi727 于 2023-8-26 10:04 编辑
在做sftp文件上传下载的,考虑到用libssh2比较多,现在windows下vs2019环境下移植,同时编写了同样的应用程序,功能均正常,可以正常进行远程sftp服务器的连接,文件上传和下载功能正常。
但是当移植到嵌入式板子上时却出现了问题,反复查找问题也没有解决,特此求助一下。
问题出现位置定位到调用libssh2_session_handshake函数出现问题。
应用程序出问题附近的部分代码如下:
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == LIBSSH2_INVALID_SOCKET) {
fprintf(stderr, "failed to create socket!\n");
goto shutdown;
}
sin.sin_family = AF_INET;
sin.sin_port = htons(22);
sin.sin_addr.s_addr = hostaddr;
if (connect(sock, (struct sockaddr*)(&sin), sizeof(struct sockaddr_in))) {
fprintf(stderr, "failed to connect!\n");
goto shutdown;
} else {
fprintf(stderr, "Connect success !\n");
}
/* Open a session */
session = libssh2_session_init();
if(!session)
{
goto shutdown;
}
libssh2_session_set_blocking(session,1);
while((rc=libssh2_session_handshake(session,sock))==LIBSSH2_ERROR_EAGAIN);----------------------->此处调用出现问题
if(rc)
{
fprintf(stderr,"Failure establishing SSH session:%d\n",rc);
goto shutdown;
}
以上应用程序编译后的程序拷贝到开发板上运行,出现如下问题提示:
*** Error in `./testssh2-static5': free(): invalid next size (fast): 0x004aa678 ***
Aborted
当然运行此程序也避免不了要使用相应编译的库,避免大家误会没有使用正确的库,具体库文件清单如下
libcrypto.so.1.1
libssh2.so.1@
libssh2.so.1.0.1
libssl.so.1.1
libstdc++.so.6.0.21*
至于如何移植编译libssh2,网上介绍一大堆,我就不在这里细说如何移植了,libssh2版本是1.11.0,同时移植libssh2也依赖openssh,我选用的版本是openssl1.1.1v。
我的介绍就这么多,大家如果还有看不懂有疑问的地方尽可以提出来,我看到后会尽快回复。
|
|