openssl编译,Windows/Ubuntu

本文详细介绍了如何在Windows、Ubuntu和CentOS上手动编译OpenSSL,包括下载依赖、配置、编译和安装步骤。在Windows环境下,使用Visual Studio命令提示符和Perl进行编译;Ubuntu和CentOS则通过终端命令完成编译过程。编译完成后,提取所需的库文件和头文件。

windows下

1. 下载ActivePerl,并安装

2. 下载安装包openssl-1.0.1g.tar.gz

3. 解压缩到openssl-1.0.1g目录下 (删除test目录中的三个没用的文件:md2test.c、rc5test.c、jpaketest.c,你打开看下就知道为什么要删了它)

4. 打开VS的命令提示,比如我打开的:"D:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts\VS2013 开发人员命令提示.exe"

5. cd到目录openssl-1.0.1g

6. 加入perl的路径(我安装的perl.exe在D:\Perl\bin目录中),命令:PATH=%PATH%;D:\Perl\bin\;

7. 命令:perl Configure VC-WIN32

8. 命令:ms\do_ms.bat

9. 打开vsvars32.bat(不清楚这步是否有必要),我这里的命令为:"D:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat"

10. 命令:nmake -f ms/ntdll.mak

11. 提取有我们需要的文件

      在目录out32dll中有库文件:libeay32.lib,libeay32.dll,libeay32.pdb,ssleay32.lib,ssleay32.dll,ssleay32.pdb,openssl.exe(可用于生成证书的工具)

      在目录inc32中有头文件:openssl目录,连目录一起提取,相比于ubuntu中生成的头文件目录,这里面还有一个.c文件

12. 提醒:如果你还需要用

<think>嗯,用户遇到了在运行./configure时出现的文件或目录找不到的问题,特别是与openssl、ssl、sql和http相关的配置。我需要帮他解决这个问题,尤其是当使用--with-openssl参数时出现的错误。首先,我得回忆一下这类问题通常可能的原因。 首先,用户可能没有正确安装openssl的开发库。因为很多情况下,编译时需要的是开发头文件和库文件,而不仅仅是运行时库。所以需要确认是否安装了openssl-devel或者类似的包。比如在Ubuntu上可能是libssl-dev,CentOS则是openssl-devel。用户可能只安装了openssl,但缺少开发文件,导致configure找不到。 其次,openssl可能安装在了非标准路径下,这时候需要指定--with-openssl=/path/to/openssl。用户可能不知道需要指定路径,或者路径不正确。这时候需要指导用户如何找到openssl的安装位置。比如使用which openssl或者find命令查找相关文件的位置。 接下来,用户提到的enable-ssl、enable-sql、enable-http这些选项,可能需要确认这些选项的正确写法。比如,有些configure脚本使用--enable-ssl,而有些可能使用--with-ssl。需要检查项目的文档,确认正确的参数名称。此外,http可能依赖于其他库,比如libcurl,需要确保这些依赖也已安装。 然后,需要检查错误信息的具体内容。比如,是否提示找不到openssl的头文件还是库文件。如果是头文件问题,可能需要检查CPPFLAGS是否包含正确的包含路径;如果是库文件问题,可能需要设置LDFLAGS和LD_LIBRARY_PATH。 另外,用户可能没有正确设置PKG_CONFIG_PATH,特别是当openssl安装在自定义路径时。pkg-config可以帮助configure脚本找到正确的编译和链接参数,所以需要确保这个环境变量指向正确的.pc文件路径。 还有可能需要检查是否安装了其他依赖,比如zlib、libxml2等,这些可能在启用ssl或http时被依赖。用户可能漏掉了这些依赖库的安装。 最后,建议用户查看项目的官方文档或INSTALL文件,确认所有依赖和配置选项的正确用法。如果问题依然存在,提供详细的配置命令和错误日志可以帮助进一步诊断。 总结下来,解决步骤可能是: 1. 确认openssl开发包已安装。 2. 定位openssl的安装路径,并正确设置--with-openssl参数。 3. 设置必要的环境变量,如CPPFLAGS、LDFLAGS、PKG_CONFIG_PATH。 4. 确保其他相关依赖如zlib、libcurl等已安装。 5. 检查配置选项的正确写法,参考项目文档。 6. 清理之前的配置缓存,重新运行configure。</think>### 解决`./configure --with-openssl`文件或目录错误的分步指南 #### 1. **确认OpenSSL开发包已安装** - **问题原因**: 编译时依赖OpenSSL的**头文件**(`.h`)和**库文件**(如`.so`或`.a`),仅安装运行时库会报错。 - **解决方法**: - **Ubuntu/Debian**: ```bash sudo apt-get install libssl-dev ``` - **CentOS/RHEL**: ```bash sudo yum install openssl-devel ``` - **验证安装**: ```bash ls /usr/include/openssl/ssl.h # 确认头文件存在 ls /usr/lib/x86_64-linux-gnu/libssl.so # 确认库文件存在 ``` #### 2. **指定OpenSSL自定义安装路径** - **场景**: 若OpenSSL安装在非标准路径(如`/opt/openssl`),需显式声明路径。 - **配置命令**: ```bash ./configure --with-openssl=/opt/openssl ``` - **环境变量支持**: ```bash export CPPFLAGS="-I/opt/openssl/include" export LDFLAGS="-L/opt/openssl/lib" export LD_LIBRARY_PATH="/opt/openssl/lib:$LD_LIBRARY_PATH" ``` #### 3. **修复`enable-ssl`/`enable-sql`/`enable-http`依赖** - **HTTP支持依赖**: 如需要`--enable-http`,可能依赖**libcurl**: ```bash sudo apt-get install libcurl4-openssl-dev # Ubuntu ``` - **SQL支持验证**: 确保数据库开发库已安装(如MySQL的`libmysqlclient-dev`)。 #### 4. **处理`PKG_CONFIG_PATH`配置** - **作用**: 帮助`configure`脚本通过`.pc`文件定位依赖。 - **设置方法**: ```bash export PKG_CONFIG_PATH="/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" ``` #### 5. **完整配置示例** ```bash # 清理旧配置 make distclean || ./configure --clean # 带OpenSSL和HTTP支持的配置 ./configure \ --with-openssl=/usr/local/openssl \ --enable-ssl \ --enable-http \ --with-sqlite3=/usr/local ``` #### 6. **错误排查技巧** - **查看`config.log`**: ```bash grep -i openssl config.log # 定位OpenSSL相关错误 ``` - **编译测试**: ```c #include <openssl/ssl.h> int main() { return 0; } ``` 编译命令: ```bash gcc -o test test.c -lssl -lcrypto ``` #### 7. **典型错误解决** - **错误**: `openssl/ssl.h: No such file or directory` - **方案**: 调整头文件搜索路径: ```bash export C_INCLUDE_PATH="/opt/openssl/include:$C_INCLUDE_PATH" ``` ### 引用说明 OpenSSL路径配置需与编译目标架构一致(如32/64位)[^1],`PKG_CONFIG_PATH`的优先级高于系统默认路径[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值