Linux环境下openssl交叉编译、安装和裁剪

最近的项目需求中依赖libcrypto和libssl库,所以需要编译安装openssl0.9.8e,花了差不多一天的时间终于成功安装和裁剪,现在总结并分享个人的方法,贴出来供大家参考和指正。

方法如下(不同的平台要根据实际环境更改相应的编译工具):

一、配置:

./config no-asmshared--prefix= <dir>

说明:no-asm  在交叉编译过程中不使用汇编代码代码加速编译过程。

shared  生成动态链接库。

 --prefix      指定生成lib include bin目录的路径,不修改此项则默认为OPENSSLDIR目录。 

二、 修改Makefile:

(这些修改也可以在config配置中使用相应参数来更改,具体怎么做请自己查相应资料,我是直接修改Makefile的)

在Makefile中找到相应参数,其后面的内容修改如下:

1、 PLATFORM=mips //注意修改此值为你产品硬件平台,如arm、mips等等,我所使用的平台为mips,我使用的是mips平台编译工具。

2、把所有的 –march=pentium 去掉(三处)。

3、指定所使用的编译工具:

             CC =  ........./mipsel-linux-uclibc-gcc
             PEX_LIBS=
             EX_LIBS=  -ldl
             EXE_EXT=
             ARFLAGS=
             AR=  .........../mipsel-linux-uclibc-ar$(ARFLAGS) r
             RANLIB=  .........../mipsel-linux-uclibc-ranlib
             PERL=  /usr/bin/perl
             TAR=  tar
             TARFLAGS=  --no-recursion
             MAKEDEPPROG=  gcc

说明

1、此处的mipsel-uclibc-gcc为交叉编译工具,根据实际情况更改为你自己平台下的编译工具即可,比如:arm-linux-gcc。注意AR和RANLIB也要作相应修改。

2、不同平台的编译器编译出来的库文件大小可能不一样。(我要两种平台下编译出来的库文件相差0.5M的大小)。

三、make

四、make install

        以上操作成功后会在你指定的目录下生成四个文件夹,在其中的lib目录下可找到所需要的 XXX.so动态库文件。

五、裁剪

      在嵌入式平台上,如果使用openssl的标准方法,编译出来的libcrypto.so和libssl.so会比较大,大约为2.1M多和436K,为了节省空间,可以使用如下方法进行裁剪:

       1、静态库:

./config--prefix=/home/zqjun/openssl5350 no-shared no-zlib no-asm no-threads no-sse2no-compno-dso no-gmp no-rfc3779 no-krb5 no-rc5 no-zlib-dynamic no-hw no-cipherno-md2 no-md4 no-mdc2 no-rc2 no-idea no-camellia no-ec no-ecdsa no-ecdhno-store no-ripemd no-des no-rc4 no-bf no-cast no-dsa no-dh no-ssl no-ssl2no-ssl3 no-tls no-perlasm

 

2、动态库:

.config--prefic=/home/zqjun/openssl5350 shared no-zlib no-asm no-threads no-sse2 no-compno-gmp no-rfc3779 no-krb5 no-rc5 no-zlib-dynamic no-hw no-cipher no-md2 no-md4 no-mdc2no-rc2 no-idea no-camellia no-ec no-ecdsa no-ecdh no-store no-ripemd no-des no-rc4no-bf no-cast no-dsa no-dh no-ssl no-ssl2 no-ssl3 no-tls no-perlasm

注意

1、动态编译时不能出现no-dso参数,因为编译过程中有些函数需要链接相应动态库。

2、编译完成后使用XXX-strip把相应的符号去掉,安装后的库会更小一些。

创建出Makefile后,再按照上面编译时的修改方法修改makefile中相应的参数值就可以了。


注意事项:

1、在linux上用make编译或用make install重新安装之前最好先用makeclean清除上一次安装所生成的所有的文件,以免因之前的错误遗留的文件导致编译安装不成功。

       2、注意引用库的顺序为:-lssl -lcrypto,如果为-lcrypto –lssl,编译时会出现错误。

       3、openssl所涉及到的算法介绍见博客:

              http://blog.csdn.net/guoliquan1/article/details/4703315

       4、参考书箱和文档:《Openss安装指南》《OpenSSL使用指南》。

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是在 Linux 上使用 OpenSSL 进行交叉编译的一般步骤: 1. 获取交叉编译工具链 您需要获取适用于您的目标体系结构的交叉编译工具链。这可以通过您的操作系统或第三方提供商进行获取。 2. 获取 OpenSSL 源代码 从 OpenSSL 官方网站下载最新版本的源代码,并将其解压缩到您的计算机上。 3. 配置 OpenSSL 在终端中导航到解压缩的 OpenSSL 目录,并运行以下命令: ``` ./Configure <options> --cross-compile-prefix=<prefix> ``` 其中,`<options>` 是您需要为 OpenSSL 配置指定的选项,以便在目标体系结构上进行编译。`<prefix>` 是您的交叉编译工具链的前缀。 例如,如果您的交叉编译工具链的前缀为 `arm-linux-gnueabi-`,您可以运行以下命令: ``` ./Configure linux-armv4 --cross-compile-prefix=arm-linux-gnueabi- ``` 4. 编译 OpenSSL 在终端中运行以下命令编译 OpenSSL: ``` make CC=<compiler> AR=<archiver> RANLIB=<ranlib> ``` 其中,`<compiler>` 是您的交叉编译工具链中的编译器,`<archiver>` 是您的交叉编译工具链中的静态库归档器,`<ranlib>` 是您的交叉编译工具链中的 ranlib 工具。 例如,如果您的交叉编译工具链的前缀为 `arm-linux-gnueabi-`,您可以运行以下命令: ``` make CC=arm-linux-gnueabi-gcc AR=arm-linux-gnueabi-ar RANLIB=arm-linux-gnueabi-ranlib ``` 5. 安装 OpenSSL 在终端中运行以下命令安装 OpenSSL: ``` make install DESTDIR=<install_dir> ``` 其中,`<install_dir>` 是您要安装 OpenSSL 的目录。 例如,如果您要将 OpenSSL 安装到 `/usr/local/openssl`,您可以运行以下命令: ``` make install DESTDIR=/usr/local/openssl ``` 完成这些步骤后,您应该能够在您的目标体系结构上运行 OpenSSL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值