精华内容
下载资源
问答
  • 包含ActivePerl(5.28)、Name(2.14.02)、CMake、openssl-1.0.2t源码、libssh2-1.9.0源码
  • 编译工具 ActivePerl:5.28 下载地址https://www.activestate.com/products/activeperl/downloads/ Name:2.14.02 下载地址https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/ CMake: 下载地址...

    说明: 本文档参考了果子DO IT的文章:Windows下编译并使用libssh2库 十分感谢改博主的说明,本人在此基础上做了一些总结和调整,整理出此文档,特此分享

    一. 编译准备

    1. ActivePerl:5.28
      下载地址 https://www.activestate.com/products/activeperl/downloads/
    2. Name:2.14.02
      下载地址 https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/
    3. CMake:
      下载地址 https://cmake.org/download/
    4. Visual Stadio 2015
      建议用此版本,如果用QT开发界面,QT5官方安装程序仅支持MSVC2015-32版本,其它的32位MSVC Kit套件需要自行编译。
    5. openssl源码
      下载地址 https://www.openssl.org/source/
      我下载的版本是 openssl-1.0.2t.tar.gz
    6. libssh2源码
      下载地址 https://www.libssh2.org/
      我下载的版本是 libssh2 1.9.0
      以上工具在附件里可下载

    二. 环境配置

    1. ActivePerl :执行exe安装程序即可
    2. Name : 执行完exe安装程序后,配置系统path环境变量,添加“C:\Program Files\NASM”
    3. CMake:解压完成后,配置系统path环境变量,添加“C:\Program Files\CMake\bin”

    三. openssl编译

    1. 打开命令提示符cmd.exe,进入openssl目录 E:\openssl-1.0.2t
    2. 输入 perl Configure VC-WIN32 --prefix=E:\OpenSSL
      参数说明:
      ① VC-WIN32 Release编译,换成debug-VC-WIN32,则进行Debug编译
      ② E:\OpenSSL 安装目录
    3. 输入 ms\do_nasm
    4. 目录重新定位至 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin,输入 vcvars32.bat
    5. 目录再次定位至 E:\openssl-1.0.2t,输入 nmake -f ms\ntdll.mak
    6. 输入 nmake -f ms\ntdll.mak test,若测试结果显示 passed all tests,说明编译的库正确
    7. 输入 nmake -f ms\ntdll.mak install,安装到指令目录

    注意:
    ① 若要编译静态库,则用 ms\nt.mak 替换掉 ms\ntdll.mak
    ② 若要生成不带汇编支持的库,则需将上述第 2、3 步替换为 perl Configure VC-WIN32 no-asm --prefix=E:\OpenSSLms\do_ms

    四. libssh2编译

    1. 修改 libssh2\win32\config.mk 文件,添加openssl的头文件和动态库
      在这里插入图片描述
    2. 使用CMake编译
      ① 打开命令提示符cmd.exe,进入libssh2目录 E:\libssh2-1.9.0
      ② 创建编译文件夹 mkdir build
      ③ 进入编译文件夹 cd build
      ④ 输入 cmake -DCRYPTO_BACKEND=WinCNG -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=E:\libssh2 --build ..
      ⑤ 输入 cmake --build . --target install,CMake默认编译的是Debug版本,若想生成Release版本,需要在后面添加 --config Release
    3. 备注
      libssh2在Win10 19.0.3版本上调试时发现ssh连接一直失败,怀疑和Win10自带的openssh客户端有冲突,使用Win10 18.0.3版本就没有这个问题。期待网友一起解决。

    附件

    1. 编译工具及源码 https://download.csdn.net/download/gchiron/11927501
    2. 编译完成的lib库 https://download.csdn.net/download/gchiron/11927507
    展开全文
  • libssh2编译

    2021-04-21 11:03:24
    近期项目中需要用到ssh链接设备,需要用到libssh2,此文总结了libssh2在windows平台上编译过程,编译结果将在文章末尾放出。 下载libssh2源码 github下载libssh2源码,下载地址:...

    近期项目中需要用到ssh链接设备,需要用到libssh2,此文总结了libssh2在windows平台上编译过程,编译结果将在文章末尾放出。

    下载libssh2源码

    github下载libssh2源码,下载地址:https://github.com/libssh2/libssh2/releases

    下载cmake

    cmake官网下载cmake,下载地址:https://cmake.org/download/

    下载OpenSSL

    直接从http://slproweb.com/products/Win32OpenSSL.html下载编译好的包即可,注意不要下载light版本,下载后直接安装:

    生成VS2015工程

    打开cmake,选择源码目录和编译目录,

    勾选BUILD_SHARED_LIBS以编译成为动态库,否则将编译成静态库,注意查看是否正确找到OpenSSL路径,如果没有则需要手动指定路径,点击Configure

    选择Visual Stidio 14 2015,点击Finish。

    等待片刻,看到Configuring done后点击Generate,如果中间有报错根据错误进行修改,

    看到Generating done时,VS工程已经生成完毕。

    编译libssh2

    打开libssh2.sln,

    右键选中libssh2工程,点击生成即可。

    编译结果我已经放到百度网盘,关注【亮仔很贪吃】,回复【libssh2】即可获取下载地址。

    展开全文
  • OpenSSL+zlib+libssh2编译(windows)

    千次阅读 2016-08-30 22:27:15
    OpenSLL编译 1.需要安装perl环境,去ActivePerl官网上下载ActivePerl,该文档撰写时使用的是5.8.8_x64版本;安装完成后,在cmd命令行中输入perl --version会显示当前的版本,否则需要将perl.exe所在的路径添加到...

    由于项目需要,需要在windows上构建sftp的客户端,索性把这三个东西集成到windows的解决方案中。

    OpenSLL编译

    1.需要安装perl环境,去ActivePerl官网上下载ActivePerl,该文档撰写时使用的是5.8.8_x64版本;安装完成后,在cmd命令行中输入perl --version会显示当前的版本,否则需要将perl.exe所在的路径添加到系统的PATH环境变量中;需要注意的是,如果系统中有多个perl,那么需要将ActivePerl的环境变量放在第一个(MinGW的默写版本不能正确执行脚本)。

    2.OpenSSL官网上下载源码包,建议使用0.9.8版本,本文档使用openssl-0.9.8zh.tar.gz版本,解压到本机目录中,建议路径名中不要包含中文名称;

    3.配置&编译OpenSSL

    1. 进入openssl源码目录 cd /d D:\vobs\lib\openssl-0.9.8zh\
    2. 执行 perl Configure VC-WIN32
    3. 执行 ms\do_ms
    4. 调用VC环境变量设置call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
    5. 执行 nmake -f ms\ntdll.mak

    4.执行正确后,将会在openssl根目录的out32dll中生成一堆exedlllib;其中libeay32.libssleay32.lib是编译时需要的lib文件,libeay32.dllssleay32.dll是运行时需要的动态链接库文件,将其拷贝到所需要的目录下即可;

    5.按照上述步骤编译出来的是opensslRelease版本,若编译Debug版本,需要将步骤3.c中的ms\do_ms.bat修改一下,原来的第23行:

    perl util\mk1mf.plno-asm VC-WIN32 >ms\nt.mak
    perl util\mk1mf.pldll no-asm VC-WIN32 >ms\ntdll.mak

    改为

    perl util\mk1mf.plno-asm debug VC-WIN32>ms\nt.mak
    perl util\mk1mf.pldll no-asm debug VC-WIN32 >ms\ntdll.mak

    zlib编译

    1.去官网下载zlib的源代码包,本文档采用的是1.2.8;解压至本机硬盘;

    2.配置&编译zlib

    1. 进入zlib源码目录 cd /d D:\vobs\lib\zlib-1.2.8\contrib\masmx86
    2. 执行 bld_ml32.bat
    3. 进入zlib源码目录 cd ..\vstudio\vc9
    4. 执行 vcbuild /rebuild zlibvc.vcproj "Debug|Win32"

    3.全部执行正确后,将会在zlib-1.2.8\contrib\vstudio\vc9\x86\ZlibDllDebug\目录下生成zlibwapi.libzlibwapi.dll将其拷贝至所需目录下

    libssh2编译

    1.去官网下载libssh2的源代码包,本文档采用的是1.6.0;解压至本机硬盘;

    2.编辑libssh2根目录下win32\config.mk文件,指定openssl以及zlib的相关信息;

    3.libssh2根目录下执行nmake-f NMakefile

    4.执行成功后在libssh2根目录下生成libssh2.liblibssh2.dll,同样的将其拷贝到所需目录下;

    linux下进行libssh2编译时,如果需要调试信息,即debug版本时,需要在执行configure时加上--enable-debug的选项




    展开全文
  • libssh2编译安装及例程

    2020-11-02 16:31:15
    二、编译安装: 1.安装依赖库(选一个即可) OpenSSL Libgcrypt WinCNG mbedTLS 2.安装libssh2,生成静态库和动态库 三、例程 #include "libssh2.h" #ifdef HAVE_WINSOCK2_H # include <winsock2.h> ...

    一、下载源代码:

    官网:https://www.libssh2.org/

    github:https://github.com/libssh2/libssh2

    二、编译安装:

    1.安装依赖库(选一个即可)

    • OpenSSL
    • Libgcrypt
    • WinCNG
    • mbedTLS

    2.安装libssh2,生成静态库和动态库

    三、例程

    #include "libssh2.h"
    
    #ifdef HAVE_WINSOCK2_H
    # include <winsock2.h>
    #endif
    #ifdef HAVE_SYS_SOCKET_H
    # include <sys/socket.h>
    #endif
    #ifdef HAVE_NETINET_IN_H
    # include <netinet/in.h>
    #endif
    # ifdef HAVE_UNISTD_H
    #include <unistd.h>
    #endif
    #ifdef HAVE_ARPA_INET_H
    # include <arpa/inet.h>
    #endif
    #ifdef HAVE_SYS_TIME_H
    # include <sys/time.h>
    #endif
    
    #include <sys/types.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <stdio.h>
    #include <ctype.h>
    
    
    int main()
    {
        unsigned long hostaddr;
        int sock, i, auth_pw = 1;
        struct sockaddr_in sin;
        const char *fingerprint;
        LIBSSH2_SESSION *session;
        LIBSSH2_CHANNEL *channel;
        const char *username = "用户名";
        const char *password = "密码";
        int rc;
    
           /init_slot()
    #ifdef WIN32
        WSADATA wsadata;
        int err;
    
        err = WSAStartup(MAKEWORD(2, 0), &wsadata);
        if(err != 0) {
            fprintf(stderr, "WSAStartup failed with error: %d\n", err);
            return 1;
        }
    #endif
    
    
        rc = libssh2_init(0);
        if(rc != 0) {
            fprintf(stderr, "libssh2 initialization failed (%d)\n", rc);
            return 1;
        }
    
        hostaddr = inet_addr("IP地址");
        sin.sin_family = AF_INET;
        sin.sin_port = htons(22);
        sin.sin_addr.s_addr = hostaddr;
        /* Ultra basic "connect to port 22 on localhost"
            * Your code is responsible for creating the socket establishing the
            * connection
            */
        sock = socket(AF_INET, SOCK_STREAM, 0);
        if(sock == -1)
        {
            qDebug() << "failed to create socket!";
            return -1;
        }
    
        if(::connect(sock, (struct sockaddr*)(&sin), sizeof(struct sockaddr_in)) != 0) {
            fprintf(stderr, "failed to connect!\n");
            return -1;
        }
    
        fprintf(stderr, "sock connected!\n");
    
        /* Create a session instance
            */
        session = libssh2_session_init();
        if(!session)
            return -1;
    
        fprintf(stderr, "session inited!\n");
    
        /* ... start it up. This will trade welcome banners, exchange keys,
            * and setup crypto, compression, and MAC layers
            */
        rc = libssh2_session_handshake(session, sock);
        if(rc != 0) {
            qDebug() << rc;
            fprintf(stderr, " %d\n", rc);
            return -1;
        }
    
        fprintf(stderr, "session handshake!\n");
    
        /* At this point we havn't yet authenticated.  The first thing to do
            * is check the hostkey's fingerprint against our known hosts Your app
            * may have it hard coded, may go to a file, may present it to the
            * user, that's your call
            */
        fingerprint = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1);
        fprintf(stderr, "Fingerprint: ");
        for(i = 0; i < 20; i++) {
            fprintf(stderr, "%02X ", (unsigned char)fingerprint[i]);
        }
        fprintf(stderr, "\n");
    
    
        /* We could authenticate via password */
        if(libssh2_userauth_password(session, username, password)) {
            fprintf(stderr, "Authentication by password failed.\n");
            goto shutdown;
        }
    
        qDebug() << "Authentication by password successful";
        /
        /
    
        /* Request a file via SCP */
    
        const char* loclfile = "源文件";
        const char *scppath = "目标文件";
        FILE *local = fopen(loclfile, "rb");
        if(!local)
        {
            qDebug() << "Can't open local file: " << loclfile;
            return -1;
        }
    
        struct stat fileinfo;
        stat(loclfile, &fileinfo);
    
    
        channel = libssh2_scp_send(session, scppath, fileinfo.st_mode & 0777, (unsigned long)fileinfo.st_size);
        if(!channel)
        {
            char *errmsg;
            int errlen;
            int err = libssh2_session_last_error(session, &errmsg, &errlen, 0);
    
            qDebug() << "Create channel failed. " << err;
            goto shutdown;
        }
    
        qDebug() << "SCP session waiting to send file";
    
        do
        {
            char mem[1024];
            size_t nread = fread(mem, 1, sizeof(mem), local);
            if(nread <= 0) /* end of file */
            {
                break;
            }
    
            char *ptr = mem;
            do
            {
                /* write the same data over and over, until error or completion */
                int rc = libssh2_channel_write(channel, ptr, nread);
                if(rc < 0) // error
                {
                    qDebug() << "ERROR " << rc;
                    break;
                }
                else /* rc indicates how many bytes were written this time */
                {
                    ptr += rc;
                    nread -= rc;
                }
            } while(nread);
    
        } while(1);
    
        libssh2_channel_free(channel);
        channel = NULL;
    
    shutdown:
    
        libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing");
        libssh2_session_free(session);
    
    #ifdef WIN32
        closesocket(sock);
    #else
        close(sock);
    #endif
        fprintf(stderr, "all done\n");
    
        libssh2_exit();
    
        return 0;
    }

     

    展开全文
  • 如果按标准的configure执行: ./configure --prefix=/data/users/mooon/third-party/libssh2 --with-openssl --with-libssl-prefix=/data/users/mooon/third-party/openssl --without-libgcrypt-prefix 得到如...
  • libxml2,openssllibssh2交叉编译

    千次阅读 2017-05-25 20:06:30
    openssl-1.0.1e libssh2-1.4.3 linux下的开源软件的编译比较统一,一般分为如下几步 ./configure;make;make install 如果是交叉编译需要考虑,1.指定交叉编译工具的PATH 2.指定交叉编译工具CC 3.交叉编译...
  • VS2017编译libcurl {zlib+openssl+libssh2}

    千次阅读 2019-10-16 19:38:30
    VS2017编译libcurl {zlib+openssl+libssh2}前言zlib编译openssl编译libssh2编译curl编译结束 前言 前提条件libcurl开发库需要zlib和openssl的支持。 本文记录完整编译方案。 zlib编译 环境准备 zlib:zlib-...
  • openssl libssh zlib

    2020-02-21 19:15:04
    包内有编译好的32位的库及源码,libssh2 openssl zlib 都有,想要64位的直接打开源码更换编译选项即可,亲测可用
  • 一、准备工作 ndk版本选择(NDK>... 选择curl适配的ssh2,openssl的版本(openssl版本大框架分为1.0和1.1,libssh2和curl都对其所支持的版本比较敏感),因此选定的curl版本是:7.51.0,libssh2的...
  • 前年,客户要求ATM客户端程序添加sftp功能,领导发给我4个静态库,分别是libcurl.lib,libeay32.lib,ssleay32.lib,libssh2.lib。 使用这4个库成功实现了sftp功能。当时从网络上查到该四个静态库均可以用开源代码...
  • openssl-1.0.1e libssh2-1.4.3 linux下的开源软件的编译比较统一,一般分为如下几步 ./configure;make;make install 如果是交叉编译需要考虑,1.指定交叉编译工具的PATH 2.指定交叉编译工具CC 3.交叉编译的架构...
  • 最近编译libssh2时,一直不能通过,参照libssh2和openssl源代码,对libssh2做如下修改。1 在src/openssl.h 文件中增加如下头文件 #include #include 2 在src/openssl.hsrc/openssl.h Showing the top two matches....
  • openssl+libssh2动态库

    2019-10-26 10:37:01
    包含release编译openssl、debug编译libssh2、release编译libssh2
  • linux下libssh2的编译

    千次阅读 2019-03-13 15:34:05
    1.下载openssl,进行编译 ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/ssl 再make,在make install ;如果编译出的是静态文件,可加shared,编译为动态文件 2.编译libssh2 ./...
  • 用VS2015编译的libcurl.dll、openssl.dll、libssh2.dll及对应的lib和相关头文件。 包含两个版本的编译结果,分别为:libcurl_7.64.0___openssl_1.0.2___libssh2_1.8.0、libcurl_7.64.0___openssl_1.1.0___libssh2_...
  • vc环境下libssh编译

    千次阅读 2014-08-17 10:06:24
    1.编译openssl的库文件 1.1 准备编译环境 首先下载openssl程序,可以从www.openssl.org下载。 安装perl,windows环境下可以用ActivePerl,linux环境自带perl。 安装visual studio。 1.2 执行编译,...
  • WINDOWS平台上使用CURL库发送网络消息,必须支持https,那么CURL库也就必须带OPENSSL,我电脑是WIN7系统32位,故以下的各种编译均是在该环境下实测通过 如果需要支持汇编,还需要提前安装nasm,下载地址为:...
  • 编译好的资源:https://download.csdn.net/download/key_xiaodj/10825541 一、资源下载 ...三、VS2013编译支持zlib、openssllibssh2库 这里我选用的是32位的 zlib和openssl动态库。 用VS2013...
  • libssh2-1.9.0编译

    2020-12-28 01:04:36
    libssh2是依赖openssl的。 之后make and make install就可以了。 多谢,亲爱的美美。
  • 在win7 64位操作系统,使用vs2010,编译openssl2180,zlib1211,libssh2180。有未编译openssl-2.1.8.0,zlib-1.2.11,libssh2-1.8.0,以及编译好的openssl-2.1.8.0,zlib-1.2.11,libssh2-1.8.0资源。附有简单编译...
  • 我的linux是64位的(x86_64),gcc是4.4.7(用file命令查看gcc是64位的),目前要编译三份源代码(openssl libssh2 libcurl),编译成64位是没有问题的。但现在需要编译32位的库,网上说只需要加上-m32就行,即:gcc...
  • libssh2在github上下的源码,更改openssl.h文件,使用cmake编译 libcurl使用lib下makefile.m32文件编译。 注意:这几个库调用是一定要注意顺序,否则link会报错,具体可参照附件中的一个实例,实例采用codeblocks...
  • linux需要的开源库。openssllibssh2。附编译方法。https://blog.csdn.net/CSDN369369/article/details/108446631
  • MD的Debug和Release版本,源码使用libssh2-1.9.0,依赖库使用Win32OpenSSL-1_1_1c,未使用zlib。
  • VS 2015编译libssh2

    千次阅读 2018-11-17 17:11:32
    准备文件: libssh2-1.8.0.tar.gz Win32OpenSSL-1_1_1.exe   先去libssh2官网下载源码:https://www.libssh2.org 再去下载ssl编译好的库:...尝试了一下自己编译OpenSSL,太费劲。   libssh2基于ssl,先安...
  •  二、编译libcurl(附加openssl,zlib,libssh) 1 openssl-0.9.8m目录把out32dll复制一份改名为out,并把ssleay32.lib/dll改名为ssl32.lib/dll libssh2-1.2.4把win32/Release_dll里的libssh2.lib和libssh2.dll...

空空如也

空空如也

1 2 3 4 5
收藏数 93
精华内容 37
关键字:

libsshopenssl编译