1.å¦ä½å¨linuxå¹³å°ä¸ç¼è¯å®è£
zlib软件
2.å¦ä½å¨linuxå¹³å°ä¸ç¼è¯å®è£
zlib软件ï¼
3.64位系统上源码编译32位libcurl库
4.Nginx编译所需基本库pcre、源码zlib、源码openssl
5.C++ä¸å¦ä½è°ç¨zlib.dllè¿è¡è§£ååå缩
å¦ä½å¨linuxå¹³å°ä¸ç¼è¯å®è£ zlib软件
1ãé¦å æ¯ç¼è¯ç¯å¢ï¼éè¦æåºæ¬çgcc,源码autotoolå·¥å ·ï¼ä¸åå¹³å°ä¸åçå®è£ æ¹å¼ï¼å ·ä½å¯ä»¥ç¾åº¦ä¸ä¸2ãå¨linuxä¸ï¼å¼æºè½¯ä»¶çç¼è¯å®è£ ä¼æåºå®çéç¨æ¥éª¤:
ä¸è½½æºç ä¸ä¼ å°æå¡å¨ä¸ï¼
解åæºç å ï¼ä¸è¬å çåç¼æ¯tar.gzãtgzãtar.gz2ï¼è¿äºå缩å å ¶å®é½å¯ä»¥ä½¿ç¨åä¸ä¸ªå½ä»¤è¿è¡è§£å tar xvf tarfile, è¿å ¥æºç ç®å½
æºç ç®å½ä¸ä¸è¬ä¼æ软件ç¸å ³çREADMEãinstallææ¡£ï¼ç®åçé 读以ä¸ï¼å¤æ°æ åµä¸é½ä¼æç¸å ³çç¼è¯æ¥éª¤ï¼ä»¥åä¾èµåº
éè¿æ¥éª¤:./configure;make && make install
./configure --helpå¯ä»¥è·å帮å©ï¼ç¨æ¥æå®å®è£ è·¯å¾ï¼ä¾èµåºçè·¯å¾ï¼ç¼è¯é项ç
3ã对äºå¨linuxä¸ç¼è¯zlib请åèæ¥éª¤2ï¼ç¸ä¿¡ä½ è½è¡ï¼å æ²¹
å¦ä½å¨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çç¾å½å½åå®å ¨é¨èµå©è éæ©ç»§ç»å®¡æ¥çå¼æºé¡¹ç®ã
位系统上源码编译位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即可
Nginx编译所需基本库pcre、zlib、openssl
在构建和配置 Nginx Web 服务器时,pcre、zlib 和 openssl 这三个基本库扮演着关键角色。投机源码它们各自提供核心功能:pcre 用于正则表达式处理,zlib 用于数据压缩,而 openssl 则确保安全的网络通信。在进行源码编译时,至关重要的是确保系统上安装了这些库的开发版本,以便编译器能够正确链接。
通常情况下,神偷源码可以通过包管理器轻松安装这些库的开发版本,按照官方指南进行编译。然而,如果在编译过程中遇到错误,如提示缺少 openssl-devel,可能是因为缺少了 SSL 模块所需的 OpenSSL 库。解决方法是安装 OpenSSL,或者将其静态编译到 Nginx 中,使用 --with-openssl= 选项。
对于静态编译,比如指定 pcre 的源码路径,Nginx 将直接包含 PCRE 的代码,不再依赖系统中的动态库。这意味着即使不安装系统库,编译后的 Nginx 仍然能运行,但前提是正确配置了库路径。
如果选择通过 rpm 包安装 Nginx,比如从 nginx.org/packages 下载的版本,通常情况下,rpm 包已经包含了编译后的 Nginx 二进制文件,因此无需额外安装 pcre-devel、zlib-devel 和 openssl-devel。这意味着在这些情况下,基本库的编译步骤可以省略。
C++ä¸å¦ä½è°ç¨zlib.dllè¿è¡è§£ååå缩
1 åå¤å·¥ä½ã
ä¸è½½zlib.dllã以åç¸å ³å¤´æ件ãå°dllæ件å头æ件å å ¥å·¥ç¨ã
2 å缩ï¼
è°ç¨å½æ°compress.
å½¢å¼ä¸º
int compressï¼Byte * dest, uLong* destLen, const Byte *source, ULONG sourceLenï¼;
åè½æ¯å°sourceæåç空é´ï¼é¿åº¦ä¸ºsourceLençæ°æ®è¿è¡å缩ï¼å缩æ°æ®å¨åå¨destä¸ï¼é¿åº¦ç±åæ°destLenè¿åã
å¦æå缩åºéï¼è¿å对åºé误å·ï¼å¦åè¿å0.
3解å缩:
è°ç¨å½æ°uncompress.
å½¢å¼ä¸º
int uncompressï¼Byte * dest, uLong* destLen, const Byte *source, ULONG sourceLenï¼;
åè½æ¯å°sourceæåç空é´ï¼é¿åº¦ä¸ºsourceLençæ°æ®è¿è¡è§£å缩ï¼è§£å缩åçæ°æ®å¨åå¨destä¸ï¼é¿åº¦ç±åæ°destLenè¿åã
å¦æ解å缩åºéï¼è¿å对åºé误å·ï¼å¦åè¿å0.