libtorrent编译-openssl篇

本文详细介绍了如何使用ActivePerl和OpenSSL完成1.0.0-beta3版本的编译过程,包括环境准备、配置、编译步骤以及可能遇到的问题解决方案。
 

openssl-1.0.0-beta3版本编译

OpenSSL的源码和编译环境下载:
openssl-1.0.0-beta3版本下载地址:

http://www.openssl.org/source/openssl-1.0.0-beta3.tar.gz
ActivePerl window安装程序下载:

http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1005-MSWin32-x86-290470.msi
  这个地址好像已经下载不到对应版本的ActivePerl-5.10.0.1005-MSWin32-x86-290470了,不过可以从Google中自己找到,选择下载ActivePerl-5.8.8.817-MSWin32-x86-257965也可以实现编译。
OpenSSL安装过程
1. 安装ActivePerl程序,确保其bin目录在环境变量path里面
2. 解压OpenSSL源代码到 F:openssl (目录自己定义)
4. 在命令行下输入如下命令:
cd openssl
perl configure VC-WIN32
ms\do_ms.bat

在这之后需要配置VC环境变量

 

进入vs中VC安装路径,执行 VCVARS32.BAT(一般在 Microsoft Visual Studio9.0\VC\Bin目录),这一步是设置临时的环境变量;

 

注意:运行Vcvars32的时候,可能会出现错误:Out of environment space,这个错误的产生是因为MS-DOS环境变量没有分配足够的内存,可以通过如下方法解决:

 

    a.点击开始, 点击运行;

 

    b.输入sysedit后回车运行该程序;

 

    c.然后会出现多个窗口,选择Config.sys窗口;

 

    d.如果存在Shell= 的语句, 在其前面输入 REM ,即注释该语句;

 

    e.如果该语句不存在,就直接输入SHELL=C:\COMMAND.COM/E:4096 /P ,注意,要保证该语句是从第一行第一个位置开始输入的;

 

    f.保存、退出重新启动电脑就应该可以解决这个问题。

 

     按上述方法解决这个问题之后,重新启动电脑后可以直接执行第4步。

 

5输入如下命令:
nmake -f ms\ntdll.mak (编译静态版本的执行 nmake -f ms\nt.mak )
6. 编译完成后会在 F:opensslout32dll 目录下生成库文件、动态链接库文件、Openssl执行文件和测试程序,有用的文档就是三个openssl.exe libeay32.dll ssleay32.dll
注意:

(1)如果出现警告作为错误的error,请修改ms目录下的ntdll.mak文件,把-w3修改为-w0

(2)最后一步编译时可能出现错误:“NMAKE : fatal error U1077: 'ml' : return code'0x1' Stop.”,产生这种错误的可能原因是vc6的bin目录下没有ml.exe这个文件。该文件包含在MASM程序中。我的解决办法是到网上下载了一个 MASM程序,安装上之后把ml.exe拷贝到VC6的bin目录下即可解决。如果这样也无法解决问题,那么请参考”openssl- 1.0.0.beta3编译错误详解“。

(3)在vc6.0中也可以实现相应版本或者低版本的编译,具体过程类似。

### libtorrent 编译后生成的文件在 Windows 环境下的相关信息 libtorrent 在 Windows 环境下编译后会生成多个文件,具体生成的文件类型和位置取决于所使用的编译方法以及配置选项。以下是常见的编译结果及其说明: #### 1. 静态库文件 当使用静态链接选项(如 `link=static`)进行编译时,生成的是静态库文件: - **文件名**: `libtorrent.lib` - **位置**: 默认情况下,静态库文件会被放置在编译目录下的 `bin` 文件夹中[^1]。 - **用途**: 静态库文件可以直接嵌入到其他项目中,无需额外的动态链接库支持。 #### 2. 动态库文件 如果选择动态链接(如 `link=shared`),则会生成动态链接库文件: - **文件名**: `libtorrent.dll` - **位置**: 同样位于 `bin` 文件夹中。 - **用途**: 动态库文件需要与对应的导入库文件(`.lib`)一起使用,适合希望减少可执行文件大小的应用场景。 #### 3. 导入库文件 对于动态库,还会生成一个导入库文件: - **文件名**: `libtorrent.dll.lib` - **位置**: 通常与动态库文件在同一目录下。 - **用途**: 导入库文件用于链接阶段,帮助应用程序正确加载动态库。 #### 4. 调试符号文件 如果启用了调试信息生成(如通过编译器选项 `/Zi` 或 `debug-symbols=on`),还会生成调试符号文件: - **文件名**: `libtorrent.pdb` - **位置**: 与目标文件(如 `.lib` 或 `.dll`)位于同一目录下。 - **用途**: 调试符号文件包含程序的符号表信息,用于调试目的。 #### 5. 其他辅助文件 根据具体的编译配置,还可能生成以下文件: - **头文件**: 包含在 `include/libtorrent` 目录下,供用户项目引用[^1]。 - **示例程序**: 如果编译了示例代码,会在 `examples` 或类似目录下生成可执行文件。 - **测试用例**: 如果编译了测试代码,可能会生成测试相关的可执行文件或库文件。 #### 示例代码:如何加载动态库 以下是一个简单的 C++ 示例,展示如何在 Windows 下加载并使用 `libtorrent.dll`: ```cpp #include <iostream> #include <libtorrent/session.hpp> int main() { try { libtorrent::session ses; std::cout << "libtorrent session created" << std::endl; } catch (std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; } return 0; } ``` ### 注意事项 - 如果在编译过程中遇到错误,例如 `NMAKE : fatal error U1077`,可能需要检查是否缺少必要的工具(如 `ml.exe`),或者参考相关文档解决[^3]。 - 使用 CMake 进行编译时,可以修改 `CMakeLists.txt` 文件以指定依赖路径,例如设置 VCPKG 根目录[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值