在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
一、下载
二、解压
openssl源码存在软链接,须在linux系统下解压
tar -vxf openssl-0.9.8d.tar.gz
cd openssl-0.9.8d
mkidr buildout
三、查看帮助
ms@ubuntu:~/work/code/openssh/openssl/openssl-0.9.8d$ ./Configure -h
Configuring for
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]
pick os/compiler from:
BC-32 BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-pre1.3 DJGPP MPE/iX-gcc OS2-EMX
OS390-Unix ReliantUNIX SINIX SINIX-N UWIN VC-CE VC-NT VC-WIN32 VC-WIN64A
VC-WIN64I aix-cc aix-gcc aix3-cc aix64-cc aix64-gcc aux3-gcc bsdi-elf-gcc cc
cray-j90 cray-t3e darwin-i386-cc darwin-ppc-cc dgux-R3-gcc dgux-R4-gcc
dgux-R4-x86-gcc dist gcc hpux-cc hpux-gcc hpux-ia64-cc hpux-ia64-gcc
hpux-parisc-cc hpux-parisc-cc-o4 hpux-parisc-gcc hpux-parisc1_0-cc
hpux-parisc2-cc hpux-parisc2-gcc hpux64-ia64-cc hpux64-ia64-gcc
hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86 irix-cc irix-gcc irix-mips3-cc
irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-alpha+bwx-ccc
linux-alpha+bwx-gcc linux-alpha-ccc linux-alpha-gcc linux-aout linux-elf
linux-generic32 linux-generic64 linux-ia32-icc linux-ia64 linux-ia64-ecc
linux-ia64-icc linux-ppc linux-ppc64 linux-sparcv8 linux-sparcv9 linux-x86_64
linux64-sparcv9 mingw ncr-scde netware-clib netware-libc netware-libc-bsdsock
netware-libc-gcc newsos4-gcc nextstep nextstep3.3 osf1-alpha-cc osf1-alpha-gcc
purify qnx4 qnx6 rhapsody-ppc-cc sco5-cc sco5-gcc solaris-sparcv7-cc
solaris-sparcv7-gcc solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc
solaris-sparcv9-gcc solaris-x86-cc solaris-x86-gcc solaris64-sparcv9-cc
solaris64-sparcv9-gcc solaris64-x86_64-cc solaris64-x86_64-gcc sunos-gcc
tandem-c89 tru64-alpha-cc ultrix-cc ultrix-gcc unixware-2.0 unixware-2.1
unixware-7 unixware-7-gcc vos-gcc vxworks-mipsle vxworks-ppc405 vxworks-ppc750
vxworks-ppc750-debug vxworks-ppc860 debug debug-BSD-x86-elf debug-Cygwin
debug-ben debug-ben-debug debug-ben-openbsd debug-ben-openbsd-debug
debug-ben-strict debug-bodo debug-darwin-ppc-cc debug-geoff
debug-levitte-linux-elf debug-levitte-linux-elf-extreme
debug-levitte-linux-noasm debug-levitte-linux-noasm-extreme debug-linux-elf
debug-linux-elf-noefence debug-linux-pentium debug-linux-ppro debug-rse
debug-solaris-sparcv8-cc debug-solaris-sparcv8-gcc debug-solaris-sparcv9-cc
debug-solaris-sparcv9-gcc debug-steve debug-steve-linux-pseudo64 debug-ulf
debug-vos-gcc
NOTE: If in doubt, on Unix-ish systems use './config'.
ms@ubuntu:~/work/code/openssh/openssl/openssl-0.9.8d$
四、配置(加上shared参数,也不生成动态库 )
执行配置前,执行清除+命令删除。
make clean
make clean
find -name "*.o" -exec rm -f '{}' \;
find -name "*.a" -exec rm -f '{}' \;
no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的
shared :生成动态连接库
no-async:没有提供GNU C的ucontext库
linux-generic32表示标准32位linux
setarch i386:声明生成的是32位CPU,如果是64位CPU则去除该部分
--prefix :指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)
Ubuntu下配置,使用绝对路径
./Configure --prefix=`pwd`/buildout-x86 --openssldir=`pwd`/buildout-x86 os/compiler:gcc
arm下配置,使用绝对路径
./Configure --prefix=`pwd`/buildout-arm --openssldir=`pwd`/buildout-arm os/compiler:arm-linux-gcc
./Configure --prefix=`pwd`/buildout-nuc970 --openssldir=`pwd`/buildout-nuc970 os/compiler:arm-linux-gcc
./Configure --prefix=`pwd`/buildout-gt665x --openssldir=`pwd`/buildout-gt665x os/compiler:arm-linux-gnueabihf-gcc
五、编译
make -j4
六、安装
make install -j4
七、安装报错
smime.pod around line 272: Expected text after =item, not a number
smime.pod around line 276: Expected text after =item, not a number
smime.pod around line 280: Expected text after =item, not a number
smime.pod around line 285: Expected text after =item, not a number
smime.pod around line 289: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 71.
Makefile:544: recipe for target 'install_docs' failed
make: *** [install_docs] Error 255
原因分析:OpenSSL 与 perl 不兼容
解决方案:将文件/usr/bin/pod2man的第71行用#注释掉,或删除文件 /usr/bin/pod2man
八、重新编译与安装
make -j4
make install -j4
注意:Ubuntu下编译后,使用make clean无法全部清除
改变编译器报错
dhparam.o: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
../Makefile.shared:164: recipe for target 'link_app.' failed
make[2]: *** [link_app.] Error 1
make[2]: Leaving directory '/home/ms/work/code/openssh/openssl/openssl-0.9.8d/apps'
Makefile:152: recipe for target 'openssl' failed
make[1]: *** [openssl] Error 2
make[1]: Leaving directory '/home/ms/work/code/openssh/openssl/openssl-0.9.8d/apps'
Makefile:239: recipe for target 'build_apps' failed
make: *** [build_apps] Error 1
执行以下命令解决
make clean
find -name "*.o" -exec rm -f '{}' \;
find -name "*.a" -exec rm -f '{}' \;