最近要写一个sftp上下载的功能, 要用的libssh2, 这里我直接用的现成的压缩包, openssl为openssl-1.0.2l.tar.gz, libssh2为libssh2-1.8.0.tar.gz, 这里做一个简单的记录

首先编译openssl, 手头的工作机为64位centos, 由于工作需要, 我需要编译32位的库, openssl编译流程如下

$ cd openssl-1.0.2l

$ ./Configure --prefix=$(HOME)/lib_lnx_32/openssl -m32 386 shared no-asm linux-generic32

$ make

$ make test

$ make install

解释一下上述流程

1. 首先进入解压后的openssl目录

2. 执行openssl自带的Configure脚本来生成Makefile, 这里我添加了配置选项

--prefix指定了安装路径

-m32编译32位程序(这里如果是aix环境, 则用-maix32)

386指示兼容32位cpu

shared意为要编译动态库版本

no-asm不使用汇编代码

linux-generic32表明统一编译环境32位的linux

以上这些命令可以在INSTALL说明文件中看到详细的解释

3. make编译源代码

4. make test进行测试, 检查是否有错误

5. make install将相关头文件,库文件等安装到prefix指定的目录中

这里贴一下Configure -h给出的配置帮助文档, 我用到的配置命令红标出来了

 

 

接下来是libssh2的安装

$ cd libssh2-1.8.0

$ export CFLAGS=-m32

$ export CPPFLAGS=-m32
$ ./configure --build=i386 --enable-shared --disable-examples-build --enable-static --prefix=$(HOME)/lib_lnx_32/libssh2 --with-openssl CPPFLAGS="-I$(HOME)/lib_lnx_32/openssl/include" LDFLAGS="-L$(HOME)/lib_lnx_32/openssl/lib"

$ make

$ make install

1. 首先进入libssh2的目录

2.这里导出一下CFLAGS和CPPFLAGS两个编译符号(这里如果是aix环境, 导出-maix32), 之后执行脚本时会自动配置成32位输出

3. 执行configure脚本配置makefile, 对应添加了相关配置选项, 此处我只编译了静态库

--build指明编译环境(aix似乎直接填对应版本就行了, 比如aix5, aix9等)

--enable-shared指明编译动态库

--disable-examples-build指明不编译例子

--enable-static指明编译静态库

--prefix指定安装路径

--with-openssl指示使用openssl

CPPFLAGS指定了openssl头文件的目录

LDFLAGS指定了openssl库目录

4. 将输出的库和头文件等内容拷贝到prefix目录

这里同样贴一下configure -h给出的配置帮助文档, 用到的配置命令同样红标出来了

 

总结一下:如果不在乎32,64, 而且只是本机使用的话, 编译起来其实挺无脑的, 但是对32位有要求的情况下, 可以使用./configure -h看一下相关选项