热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编译linux内核openssl,Linux编译安装openssl升级系统openssl和生成系统动态连接库dynamic/sharedlibraries...

Linux编译安装openssl升级系统openssl和生成系统动态连接库dynamicsharedlibrariesopenssl:多用途的命令行工具,

Linux编译安装openssl升级系统openssl和生成系统动态连接库dynamic/shared libraries

openssl:多用途的命令行工具,各功能分别使用子命令实现

libcrypto:公共加密库(存放了各种加密算法)

libssl:ssl协议的实现

yum -y install perl gcc

wget -4 http://zlib.net/zlib-1.2.8.tar.gz

tar -zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure --shared

make

make install

cp libz.a /usr/local/lib

chmod 644 /usr/local/lib/libz.a

cp libz.so.1.2.8 /usr/local/lib

chmod 755 /usr/local/lib/libz.so.1.2.8

cp zlib.3 /usr/local/share/man/man3

chmod 644 /usr/local/share/man/man3/zlib.3

cp zlib.pc /usr/local/lib/pkgconfig

chmod 644 /usr/local/lib/pkgconfig/zlib.pc

cp zlib.h zconf.h /usr/local/include

chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h

wget -4 --no-check-certificate https://www.openssl.org/source/openssl-1.0.1t.tar.gz

tar -zxvf openssl-1.0.1t.tar.gz

cd openssl-1.0.1t

./config --prefix=/usr shared zlib

make

make install

installing libcrypto.a

installing libssl.a

installing libcrypto.so.1.0.0

installing libssl.so.1.0.0

make[1]: Entering directory `/usr/lib64'

make[2]: Entering directory `/usr/lib64'

make[2]: Leaving directory `/usr/lib64'

make[2]: Entering directory `/usr/lib64'

make[2]: Leaving directory `/usr/lib64'

make[1]: Leaving directory `/usr/lib64'

cp libcrypto.pc /usr/lib64/pkgconfig

chmod 644 /usr/lib64/pkgconfig/libcrypto.pc

cp libssl.pc /usr/lib64/pkgconfig

chmod 644 /usr/lib64/pkgconfig/libssl.pc

cp openssl.pc /usr/lib64/pkgconfig

chmod 644 /usr/lib64/pkgconfig/openssl.pc

#-fPIC,在 Linux 下动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库,不加经常也能正常运行,只是创建 .so 的时候会有一个警告。

如果--prefix=/usr 目录是其他目录则需要使用ldconfig(一个动态链接库管理命令),为了让动态链接库为系统所共享

echo "/usr/local/openssl/lib">>/etc/ld.so.conf

ldconfig -v

shared no-shared

是否生成动态连接库。

echo '/usr/lib64' >> /etc/ld.so.conf

echo '/usr/local/lib64' >> /etc/ld.so.conf

使用ldconfig(一个动态链接库管理命令),为了让动态链接库为系统所共享

ldd $(which nginx)

ldd命令用于判断某个可执行的 binary 档案含有什么动态函式库

Linux下,动态库通常以.so(share object)结尾。(通常/lib和/usr/lib等目录下存在大量系统提供的以.so结尾的动态库文件)

Windows下,动态库常以.dll结尾。(通常C:\windows\System32等目录下存在大量系统提供的以.dll结尾的动态库文件)

动态库与静态库之间的区别

静态库是指编译连接时,把库文件的代码全部加入到可执行文件中,所以生成的文件较大,但运行时,就不再需要库文件了。即,程序与静态库编译链接后,即使删除静态库文件,程序也可正常执行。

动态库正好相反,在编译链接时,没有把库文件的代码加入到可执行文件中,所以生成的文件较小,但运行时,仍需要加载库文件。即,程序只在执行启动时才加载动态库,如果删除动态库文件,程序将会因为无法读取动态库而产生异常。

php

--with-openssl=DIR Include OpenSSL support (requires OpenSSL >= 0.9.8)

nginx

--with-pcre force PCRE library usage

--with-pcre=DIR set path to PCRE library sources

--with-zlib=DIR set path to zlib library sources

--with-openssl=DIR set path to OpenSSL library sources

apache

--with-ssl=PATH OpenSSL installation directory

--with-ssl=/usr/local/openssl 指向编译的目录,因为不但需要include还需要lib

yum -y install gcc perl make

wget -4 --no-check-certificate https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz

tar -zxf openssl-1.0.2-latest.tar.gz

mv openssl-1.0.2? openssl2

如果--prefix=/usr 目录是其他目录则需要使用ldconfig(一个动态链接库管理命令),为了让动态链接库为系统所共享

echo "/usr/local/openssl/lib">>/etc/ld.so.conf #非必须

ldconfig -v

ldconfig做的这些东西都与运行程序时有关,跟编译没有关系。

1、./config

配置文件夹/usr/local/ssl/

ldd $(which openssl)

2、./config --prefix=/usr shared zlib

./config --prefix=/usr

配置文件夹/usr/ssl

ldd $(which openssl)

3、./config --prefix=/usr/local

配置文件夹/usr/local/ssl/

ldd $(which openssl)

3、./config -fPIC --prefix=/usr/local/openssl shared no-ssl2 no-ssl3

配置文件夹/usr/local/openssl/ssl

mv /usr/bin/openssl /usr/bin/openssl.old

mv /usr/include/openssl /usr/include/openssl.old

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

ln -sf /usr/local/openssl/lib/libcrypto.so.1.0.0 /lib/libcrypto.so.6

echo "/usr/local/openssl/lib" >>/etc/ld.so.conf

ldconfig -v

/usr/local/openss/ssl 配置文件

/usr/local/openss/lib 库文件

/usr/local/openss/include 头文件

./config --prefix=/usr/local/openssl

/usr/local/openssl/ssl

可执行文件放在/usr/local/openssl/bin

库文件放在/usr/local/openssl/lib

配置文件放在/usr/local/openssl/etc

其他资源在/usr/local/openssl/share/

make && make install

make uninstall

find / -name libssl.so

--with-openssl=

ln -s /usr/lib64/libssl.so /usr/lib

dynamic/shared libraries

/lib /lib64是内核级的

/usr/lib /usr/lib64是系统级的

/usr/local/lib /usr/local/lib64是用户级的

4b5ac3c2c521a0dbd14140c03a8af2b3.png



推荐阅读
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • 实验七、绕过ASLR 第二部分
    7.1实验环境VM配置:Ubuntu12.04(x86)7.2实验原理什么是爆破?使用爆破技巧,来绕过共享库地址随机化。7.3实验过程7. ... [详细]
  • 1、为什么要对nginx平滑升级随着nginx越来越流行,并且nginx的优势也越来越明显,nginx的版本迭代也来时加速模式,1.9. ... [详细]
  • 安装Nginx时报错.configure:error:theHTTPrewritemodulerequiresthePCRElibrary.安装pcre-devel解决问题yum- ... [详细]
  • 高并发网站架构的核心原则其实就一句话“把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问CDN。能缓存CDN服务器上的,就不要让CDN去访问源(静态服 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 导读:今天编程笔记来给各位分享关于php动态扩展怎么加载的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 系统osx10.11用的是brew下的php56brew下的nginx下了一个项目,在安装过程中提示缺少,intl和apc扩展,就用下面的语句下载了,也装上了,但php还是没有加载 ... [详细]
  • linux filesystem_如何使用cgdb + qemu调试linux内核模块
    如何使用cgdbqemu调试linux内核模块前言Linux代码庞大而繁杂,光看代码会使人头晕目眩,如果能通过调试工具对其代码执行流程进行调试ÿ ... [详细]
  • C# WinCE中DataGrid列设置(列宽 列标题等)
    1、代码定义:privatevoidfrmLog_Load(objectsender,System.EventArgse){设置DataGrid的列宽InitDataGridC ... [详细]
  • 11 微服务网关(一)概念介绍  Zuul简单入门
    11.1服务网关的概念11.1.1什么是微服务网关11.1.2作用和应用场景11.2常见的API网关实现方式11.3基于Nginx的网关实现IP地址映射到路径,统一 ... [详细]
  • C#使用System.Net.Mail类实现邮件发送【.Net开发】
    这篇文章介绍了C#使用System.Net.Mail类实现邮件发送的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值, ... [详细]
  • #usernobody;worker_processes1;#error_loglogserror.log;#error_loglogserror.lognotice;#error ... [详细]
  • 4种分布式Session的实现方式!老大直呼666...
    前言公司有一个Web管理系统,使用Tomcat进行部署。由于是后台管理系统,所有的网页都需要登录授权之后才能进行相应的操作。起初这个系统的用的人也不多& ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
banli
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有