皮皮网

【pokethub安卓源码】【源码gut】【prop 源码】zlib源码下载

2024-11-23 08:48:10 来源:el的源码

1.如何在ubuntu中安装zlib和zlib-devel
2.实现web服务器中的源码gzip
3.zlibrary种子的全套下载流程,附下载和改名工具
4.如何在linux平台上编译安装zlib软件
5.Nginx系列:依赖安装(pcre,下载zlib,openssl)(2)
6.64位系统上源码编译32位libcurl库

zlib源码下载

如何在ubuntu中安装zlib和zlib-devel

       åœ¨ubuntu软件源里zlib和zlib-devel叫做zlib1g zlib1g.dev

        $ sudo apt-get install zlib1g

        $ sudo apt-get install zlib1g.dev

        直接输入上述命令后还是不能安装。这就要求我们先装ruby.

        在ubuntu里,zlib叫zlib1g,相应的zlib-devel叫zlib1g.dev。默认的安装源里没有zlib1g.dev。要在packages.ubuntu.com上找。

        $sudo apt-get install ruby

        然后再装zlib1g-dev就可以了

        $sudo apt-get install zlib1g-dev

实现web服务器中的gzip

       web服务器实现压缩数据发送给浏览器

       web服务器使用gzip压缩可以提高网站的响应速度,因为数据压缩会消耗一定的源码cpu及I/O的。但是下载可以减少通过网络传输的数据量。

       从而提高网站的源码浏览速度

         本程序本人自己在ubuntu中编译成功,在ubuntu中经过Firefox中,下载pokethub安卓源码window 系统IE 8,源码Firefox、下载chrome中测试成功。源码

       本程序需要用到zlib压缩类库,下载没有装将无法成功,源码本人只提供在ubuntu中的下载代码及运行方式。希望大家谅解。源码关于用到的下载

       zlib库中的知识,稍后会出新的源码博客做解释,关于gzip压缩的头部请看另外一篇博客 gzip头部格式。

       源码及makefile下载地址:tl.h#include string.h#include sys/stat.h#include signal.h#include stdio.h#include string.h#include assert.h#include zlib.h#define OS_CODE 0x /*Unix OS_CODE*/#define DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION#define DEFAULT_WINDOWSIZE -#define DEFAULT_MEMLEVEL 9#define DEFAULT_BUFFERSIZE #define MAX #define METHOD //获取数据的方式,使用字符串的长度#define URI //表示URI的最大长度#define VERSION //HTTP版本好的最大长度#define TYPE     //表示文件的类型的长度int res_socket;void app_exit();static const char gzip_header[] = { '', '', Z_DEFLATED, 0, 0, 0, 0, 0, 0, OS_CODE};void put_long (unsigned char *string, unsigned long x) {  string[0] = (x 0xff); string[1] = ((x 8) 0xff) ;   string[2] = ((x ) 0xff) ;  string[3] = ((x ) 0xff);}/*@description:将数据使用gzip压缩后发给浏览器@parametersockd:套接字file: 要压缩的内容了*/int gzip_buffer (int  sockd, char * msg, int len) { z_stream stream;//zlib使用的。  int ret, flush; char in[MAX];//存放输入的数据  char send[MAX + ];//存放压缩过后的数据    unsigned have;  memcpy (send, gzip_header, ); memset (in, 0, len);    stream.zalloc = Z_NULL; stream.zfree = Z_NULL;  stream.opaque = Z_NULL; stream.avail_in = 0;    stream.next_in = Z_NULL;    memcpy (in, msg, len);  //压缩初始化。    int tmp_result = deflateInit2(stream,源码gut              Z_DEFAULT_COMPRESSION,//压缩级别                Z_DEFLATED,//压缩方式               -MAX_WBITS,             8,              Z_DEFAULT_STRATEGY);    if (Z_OK != tmp_result) {       printf("deflateInit error: %drn", tmp_result);        return 0;   }   stream.avail_in = len; //要压缩数据的长度   stream.next_in = in;    //要压缩数据的首地址 stream.avail_out = MAX;  //可存放的最大输出结果的长多。就是压缩后数据的最大长度   stream.next_out = send + ; //存放压缩数据的开始位置,send前十个字节用来放头部   ret = deflate (stream,Z_FINISH); //压缩  assert (ret != Z_STREAM_ERROR); switch (ret) {      case Z_NEED_DICT:           ret = Z_DATA_ERROR;     case Z_DATA_ERROR:      case Z_MEM_ERROR:           (void)inflateEnd (stream);         return ret; }   have = MAX - stream.avail_out;  unsigned crc = crc(0L, in, len);  char * tail = send + + have; put_long (tail, crc);   put_long (tail + 4, len);   write (sockd, send, have + ); deflateEnd (stream);   return 1;}/* @description:开始服务端监听@parameterip:web服务器的地址port:web服务器的端口@result:成功返回创建socket套接字标识,错误返回-1*/int socket_listen( char *ip, unsigned short int port){   int res_socket; //返回值   int res, on;    struct sockaddr_in address; struct in_addr in_ip;   res = res_socket = socket(AF_INET, SOCK_STREAM, 0); setsockopt(res_socket, SOL_SOCKET, SO_REUSEADDR, on, sizeof(on));  memset(address, 0, sizeof(address));   address.sin_family = AF_INET ;  address.sin_port =htons(port);  address.sin_addr.s_addr = htonl(INADDR_ANY); //inet_addr(".0.0.1");    res = bind( res_socket, (struct sockaddr *) address, sizeof( address ) );  if(res) { printf( "port is used , not to repeat bindn" ); exit(); };   res = listen(res_socket,5); if(res) { printf( "listen port is error ;n" ); exit( );  };   return res_socket ;}/*@description:向客户端发送网页头文件的信息@parameterconn_socket:套接字描述符。status:/rentiansheng"Reage blog/a";   res_socket = socket_listen( ".0.0.1", ) ;  //当按ctrl+c结束程序时调用,使用app_exit函数处理退出过程    signal(SIGINT, app_exit);   while(1){       conn_socket = accept( res_socket, (struct sockaddr * )client_addr, len );     printf("reagen");     tmp = read (conn_socket, buf, MAX-1);       buf [MAX - 1] = 0;      send_/project...

       说明:学习Linux的目录结构后,要养成规范使用的习惯,把源码放到/usr/local/src目录下

       规范参看:

       三,解压源码包

       tar –zxvf pcre2-..tar.gz

       四,配置安装参数

       cd pcre2-.

       ./configure –-help (可以查看很多安装的prop 源码参数,自主进行选择)

       ./configure (一般直接默认配置就行,会生成Makefile,默认安装目录是/usr/local)

       五,编译make

       会调用刚才生成的编译文件Makefile

       六,检查make check

       这个命令可以跳过,部分软件没有make check命令

       七,安装make install

       直接执行安装即可

       八,检查安装

       cd /usr/local/lib

       查看目录下有没有libpcre2的动态库文件

       九,卸载软件/库

       一般的flowplay源码软件都会在编译安装时,写好uninstall卸载指令

       cd /usr/local/src/pcre/pcre2-.

       make uninstall

       则会把安装的函数库全部删除,完成卸载

       十,重新编译和安装

       先清除旧的安装参数配置和包残留

       make clean(部分软件是make clean all)

       再重回第三步:./configure进行配置即可

       官网地址: zlib.net/,可下载最新版本

       具体的安装流程与上面的pcre相同,不再详细描述,都是:

       选择安装包,下载安装包,解压安装包,进入目录

       执行./configure --> make --> make check --> make install

       去安装目录(这里默认是hudi 源码/usr/lcoal/lib)检查是否存在zlib的so库

       官网地址: /index.html (openssl.org),可下载最新版本

       具体的安装流程与上面的pcre相同,不再详细描述,都是:

       选择安装包,下载安装包,解压安装包,进入目录

       执行./configure --> make --> make check --> make install

       ./configure可能会遇到一些问题:

       执行:yum -y install perl-IPC-Cmd

       说明:安装的openssl不是函数库,而是软件!

       所以直接去安装目录(这里默认是/usr/local)下找openssl的目录

       如果直接执行openssl version,可能会报找不到命令:那就是没有没有把安装目录加入系统环境

       参看这篇文章:

       或者显示的版本不是你安装的版本:那就是原本系统就装有openssl

       我的做法是:

       find / -name openssl 或者 whereis openssl

       找到所有的openssl文件,函数库,执行软件等,都删除

       再根据上面的方法重新安装,并配置系统环境

       pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的

       zlib-devel也是同样的作用

       这2个我没有找到对应的源码安装包,所以只用使用yum安装了

       yum -y install pcre-devel

       yum -y install zlib-devel

       这里也算是体现了源码安装 + yum安装结合的方式了

       或许你可以看看这篇文章:

       下一期详细写如何在Linux下源码编译安装Nginx,敬请期待!

位系统上源码编译位libcurl库

       有时候需要交叉编译libcurl,比如目标机器是位系统的,但是本地机器是位系统的,而且由于某些原因,我们无法在位系统上直接编译,所以需要用到交叉编译

       libcurl是依赖openssl的,所以先编译openssl的位库 完整编译选项配置如下:

       详细选项含义如下:预先已经export CC的版本 配置-m指定编译位的库 配置–prefix指定openssl的安装目录 配置–openssldir指定openssl的头文件目录 配置shared关键字指定编译时生成动态库(libssl.so/libcrypto.so及其相关软连接)然后再make && make install即可

       有时候有的系统是默认安装了位zlib库的,那么就可以跳过这一步,但是有的系统需要自己下载编译zlib-位库 完整编译选项配置如下:直接修改CMakeLists.txt文件,增加以下两行 set(CMAKE_C_FLAGS “-m”) set(CMAKE_CXX_FLAGS “-m”) 详细选项含义如下:配置CMAKE_C_FLAGS指定编译位库环境 配置CMAKE_CXX_FLAGS指定编译位库环境然后再mkdir build && cd build && cmake .. && make && make install即可

       最后就是编译libcurl 完整编译选项配置如下:

       详细选项含义如下:配置PKG_CONFIG_PATH指定启动openssl选项(启动这个选项,就会默认链接lssl,lcrypto,lz三个库) 配置CFLAGS指定编译位库环境 配置CPPFLAGS指定链接的库的头文件 配置LDFLAGS指定链接的库的路径然后再make && make install即可

       当编译第三方库的时候,如果有CMakeLists.txt,直接用CMakeLists.txt编译就很方便;如果只有configure,那么需要先了解编译选项执行./configure –help来查看当前支持的编译选项然后根据提示配置一下我们需要指定的选项,比如自己指定的openssl的版本的库和头文件路径名,比如CC的版本,比如安装路径等等 (当然,如果不需要额外配置这些东西的话,直接走默认配置的话,那么直接执行./config或者./configure就行)然后在生成Makefile之后,再make && make install即可

如何在linux平台上编译安装zlib软件?

       æƒ³è¦åœ¨linux平台上编译安装zlib软件,你需要搜索zlib官方网站,下载源码来安装zlib软件包进行安装即可。

       Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持位和位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

       zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权。截至年3月,zlib是包含在Coverity的美国国土安全部赞助者选择继续审查的开源项目。