linux编译32位openssl和libssh2
最近要写一个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看一下相关选项